xcursor-lambda
maintainer SwooshyCueb
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads cursor theme data from a non-whitelisted but plausibly official KDE-look API; the worst case of a swapped source is cosmetic tampering, not code execution, as it installs only theme files.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads cursor theme data from a non-whitelisted but plausibly official KDE-look API; the worst case of a swapped source is cosmetic tampering, not code execution, as it installs only theme files.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:17
source=("${pkgname}_dl.xml::https://api.kde-look.org/ocs/v1/content/download/${_ocsid}/${_fileidx}"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Markus Kitsinger (SwooshyCueb) <root@swooshalicio.us>
2
3
pkgname=xcursor-lambda
4
pkgver=1.3
5
pkgrel=1
6
_ocsid=999496
7
_fileidx=1
8
_ocsid_black=999424
9
_fileidx_black=1
10
pkgdesc="Recreation of the perspective cursor theme with some changes and a black variant"
11
arch=('any')
12
url="https://www.pling.com/p/${_ocsid}/"
13
depends=('libxcursor')
14
makedepends=('libxml2')
15
options=('!debug')
16
# the acutal download URL changes occasionally, so we have to use the API to fetch it
17
source=("${pkgname}_dl.xml::https://api.kde-look.org/ocs/v1/content/download/${_ocsid}/${_fileidx}"
18
"${pkgname}-black_dl.xml::https://api.kde-look.org/ocs/v1/content/download/${_ocsid_black}/${_fileidx_black}"
19
"lambda.index.theme"
20
"lambda-black.index.theme")
21
sha256sums=('SKIP'
22
'SKIP'
23
'06356d3e024295a514fbe3c51e4c9ab0ac45bca1ae2a78c875cb4a638b30890b'
24
'1fa2aee2f4184f514af37ff4d18cb681c3ca524c360895bf9a2b3128d21b33de')
25
26
prepare() {
27
echo -n ' '; msg "$(gettext "Retrieving sources...")"
28
cd "${startdir}"
29
_downloadlink=$(xmllint --xpath '//ocs/data/content[@details="download"]/downloadlink/text()' "${srcdir}/${pkgname}_dl.xml")
30
_downloadlink_black=$(xmllint --xpath '//ocs/data/content[@details="download"]/downloadlink/text()' "${srcdir}/${pkgname}-black_dl.xml")
31
_netfile="${pkgname}.tar.gz::${_downloadlink}"
32
_netfile_black="${pkgname}-black.tar.gz::${_downloadlink_black}"
33
download_file "${_netfile}"
34
download_file "${_netfile_black}"
35
36
echo -n ' '; msg "$(gettext "Validating %s files with %s...")" "source" "sha256sums"
37
verify_integrity_one "${_netfile}" sha256 "01d4f40830d20173a69cb8bed0ea26435bce0570d4591a8281bccef870ee5737"
38
verify_integrity_one "${_netfile_black}" sha256 "a12187b20c94923d303e799021d44e9cad095adb6b55bcc211baf488d5de0b55"
39
40
echo -n ' '; msg "$(gettext "Extracting sources...")"
41
cd "${srcdir}"
42
extract_file "${_netfile}"
43
extract_file "${_netfile_black}"
44
}
45
46
package() {
47
install -d "${pkgdir}/usr/share/icons"
48
cp -r "${srcdir}/Lambda" "${pkgdir}/usr/share/icons"
49
cp -r "${srcdir}/Lambda-black" "${pkgdir}/usr/share/icons"
50
install -Dm644 "${srcdir}/lambda.index.theme" "${pkgdir}/usr/share/icons/Lambda/index.theme"
51
install -Dm644 "${srcdir}/lambda-black.index.theme" "${pkgdir}/usr/share/icons/Lambda-black/index.theme"
52
}
53
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |