ddper
maintainer solidstrong
· 0 votes
· scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged
The package downloads a prebuilt executable tarball from a non-standard, non-whitelisted host (ddper.ir) which is not a common upstream or forge domain, and the archive is used as-is without rebuilding from source, creating a supply-chain risk if the host is compromised.
Triggered rules
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=("https://ddper.ir/client/linux/DDPER-${pkgver}-linux_${_arch}.tar.xz")
MEDIUM
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package downloads a prebuilt executable tarball from a non-standard, non-whitelisted host (ddper.ir) which is not a common upstream or forge domain, and the archive is used as-is without rebuilding from source, creating a supply-chain risk if the host is compromised.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: solidstrong <latifishal@gmail.com>
2
3
pkgname=ddper
4
pkgver=9.1
5
pkgrel=1
6
pkgdesc="DDPER (unofficial DDNet client)"
7
arch=('x86_64')
8
url="https://ddper.ir"
9
options=('!debug')
10
license=('custom:Proprietary')
11
depends=('freetype2' 'opusfile' 'curl' 'glew' 'wavpack' 'ffmpeg' 'libnotify' 'miniupnpc' 'sqlite' 'mariadb-libs' 'vulkan-icd-loader')
12
optdepends=('discord-game-sdk: Enable rich presence in Discord desktop client.')
13
provides=('ddper')
14
15
_arch="x86_64"
16
17
source=("https://ddper.ir/client/linux/DDPER-${pkgver}-linux_${_arch}.tar.xz")
18
sha256sums=('7228b5ec923c43273b613e72f3f7d0e59430e8a3a2751e8a7825628f490f2c46')
19
20
prepare() {
21
mkdir -p "$srcdir/tmp"
22
23
tar -xf "DDPER-${pkgver}-linux_${_arch}.tar.xz" \
24
-C "$srcdir/tmp" \
25
--strip-components=1
26
}
27
28
build() {
29
:
30
}
31
32
package() {
33
install -d "$pkgdir/opt/$pkgname"
34
install -d "$pkgdir/usr/bin"
35
install -d "$pkgdir/usr/share/applications"
36
install -d "$pkgdir/usr/share/icons/hicolor/48x48/apps"
37
install -d "$pkgdir/usr/share/licenses/$pkgname"
38
39
cp -a "$srcdir/tmp/." "$pkgdir/opt/$pkgname"
40
41
# Wrapper to ensure correct working directory
42
cat << 'EOF' > "$pkgdir/usr/bin/ddper"
43
#!/bin/bash
44
exec /opt/ddper/DDPER "$@"
45
EOF
46
chmod +x "$pkgdir/usr/bin/ddper"
47
48
# Application icon
49
install -Dm644 "$srcdir/tmp/data/gui_logo.png" \
50
"$pkgdir/usr/share/icons/hicolor/48x48/apps/ddper.png"
51
52
# License
53
if [[ -f "$srcdir/tmp/LICENSE" ]]; then
54
install -Dm644 "$srcdir/tmp/LICENSE" \
55
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
56
fi
57
58
# Desktop entry
59
cat << EOF > "$pkgdir/usr/share/applications/ddper.desktop"
60
[Desktop Entry]
61
Type=Application
62
Name=DDPER
63
StartupWMClass=DDPER
64
GenericName=Platform Game
65
Exec=/usr/bin/ddper %u
66
Icon=ddper
67
Terminal=false
68
Keywords=game;multiplayer;
69
Categories=Game;ArcadeGame;
70
MimeType=x-scheme-handler/ddper;
71
Comment=Launch DDPER
72
EOF
73
}
Changes since previous scan
--- PKGBUILD @ 2026-07-31 00:14+++ PKGBUILD @ 2026-08-03 00:08@@ -1,23 +1,32 @@ # Maintainer: solidstrong <latifishal@gmail.com> pkgname=ddper-pkgver=8.4+pkgver=9.1 pkgrel=1 pkgdesc="DDPER (unofficial DDNet client)" arch=('x86_64') url="https://ddper.ir"+options=('!debug') license=('custom:Proprietary') depends=('freetype2' 'opusfile' 'curl' 'glew' 'wavpack' 'ffmpeg' 'libnotify' 'miniupnpc' 'sqlite' 'mariadb-libs' 'vulkan-icd-loader') optdepends=('discord-game-sdk: Enable rich presence in Discord desktop client.') provides=('ddper')+ _arch="x86_64"-source=("https://ddper.ir/client/linux/ddper-v${pkgver}-linux_${_arch}.tar.xz"- "https://ddper.ir/image/icon.png")-sha256sums=('2f62ffd210aea3eb2f4015d7a59da35b3ecc1bf861a1df9aed7b7a1e70a8dac0'- '6649746c0783e4187422125358126dc65f252330104143fa515ece61ed6aba8a')++source=("https://ddper.ir/client/linux/DDPER-${pkgver}-linux_${_arch}.tar.xz")+sha256sums=('7228b5ec923c43273b613e72f3f7d0e59430e8a3a2751e8a7825628f490f2c46')++prepare() {+ mkdir -p "$srcdir/tmp"++ tar -xf "DDPER-${pkgver}-linux_${_arch}.tar.xz" \+ -C "$srcdir/tmp" \+ --strip-components=1+} build() {- :+ : } package() {@@ -27,21 +36,26 @@ install -d "$pkgdir/usr/share/icons/hicolor/48x48/apps" install -d "$pkgdir/usr/share/licenses/$pkgname" - mkdir -p "$srcdir/tmp"- tar -xf "ddper-v${pkgver}-linux_${_arch}.tar.xz" -C "$srcdir/tmp" --strip-components=1 cp -a "$srcdir/tmp/." "$pkgdir/opt/$pkgname" - # Use wrapper instead of symlink to ensure correct working directory+ # Wrapper to ensure correct working directory cat << 'EOF' > "$pkgdir/usr/bin/ddper" #!/bin/bash exec /opt/ddper/DDPER "$@" EOF chmod +x "$pkgdir/usr/bin/ddper" - install -Dm644 "icon.png" "$pkgdir/usr/share/icons/hicolor/48x48/apps/ddper.png"+ # Application icon+ install -Dm644 "$srcdir/tmp/data/gui_logo.png" \+ "$pkgdir/usr/share/icons/hicolor/48x48/apps/ddper.png" - [ -f "$srcdir/tmp/LICENSE" ] && install -Dm644 "$srcdir/tmp/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"+ # License+ if [[ -f "$srcdir/tmp/LICENSE" ]]; then+ install -Dm644 "$srcdir/tmp/LICENSE" \+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"+ fi + # Desktop entry cat << EOF > "$pkgdir/usr/share/applications/ddper.desktop" [Desktop Entry] Type=Application@@ -57,4 +71,3 @@ Comment=Launch DDPER EOF }-Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 11:17:50 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |