dustforce-hib-dustmod
The package downloads Dustmod patches and game assets from dustkid.com, a community site for the game, which is not a standard or whitelisted host but hosts non-executable, game-specific data; the content is applied as patch files and resources, not remote code, and the build process otherwise uses official Humble Bundle installers and standard, safe operations.
Triggered rules
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 Dustmod patches and game assets from dustkid.com, a community site for the game, which is not a standard or whitelisted host but hosts non-executable, game-specific data; the content is applied as patch files and resources, not remote code, and the build process otherwise uses official Humble Bundle installers and standard, safe operations.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:26
'http://dustkid.com/getdustmod/linux64_drmfree'
PKGBUILD
1 offending line(s) highlighted# Maintainer: Joseph Lansdowne <J49137@gmail.com>
# Forked from dustforce-hib
# Commit: https://aur.archlinux.org/cgit/aur.git/commit/?h=dustforce-hib&id=652033563defbd0b002b57a14ab0b4070714e9a4
# Author: Sam S. <smls75@gmail.com>
# URL used for version checking: http://dustkid.com/backend8/dustmod_version.php
pkgname=dustforce-hib-dustmod
pkgver=1.0+h20141222_24.8.1
_hibver=2014-12-22
_hibver_windows=07012015
pkgrel=2
pkgdesc='A fast-paced 2D action platformer (Humble Bundle version, with Dustmod)'
url='http://dustmod.com/'
arch=('x86_64')
license=('custom:commercial')
depends=('mesa' 'libgl' 'sdl2' 'libxdamage' 'freealut' 'libidn11'
'libvorbis' 'libxft' 'xdg-utils' 'openssl-1.0')
PKGEXT='.pkg.tar'
DLAGENTS+=('hib::/usr/bin/echo "Could not find %u. Manually download it."; exit 1')
_installer="Dustforce-Linux-${_hibver}.sh"
_installer_windows="dustforce_dx_${_hibver_windows}.zip"
source=("hib://${_installer}"
"hib://${_installer_windows}"
'http://dustkid.com/getdustmod/linux64_drmfree'
'dustmod-patch::http://dustkid.com/backend8/dustmod_package4.php?platform=linux64_drmfree'
'dustforce-dustmod'
'dustforce-hib-dustmod.desktop')
sha256sums=('f7bc7ac00ef9166c0b4550e1fc120ffe78307e92be1e379f9c40a4513660fae1'
'386c82e28eb08eea443b9881ea360cc10f29d9baf7bdafa90457a96e75b3c72c'
'03eba46c134e43d76fbd13e0b0ad8cab39db54e15cb9a6aca8bc45b7c50fe58d'
'a23973f2fbaefabd597a397098609527df171a790b5f1d25ffa16b7092bb8292'
'ff3c4e8cb45f6e931b6545c55064aaf644b885eb99947b6e32c953faea77a3ce'
'031d9d6a6ed41c4f6c69ea7dc7037d1a53f656e37f16d33f220ca25db7e2912b')
# zip with no top-level directory - will extract manually
noextract=('linux64_drmfree')
# extracts a Dustmod patch archive into the given directory
# I haven't worked out any existing archive format that this uses, so this is a
# simple inline implementation
unarchive-patch () {
in="$1"
out="$2"
cat "$in" | while true; do
read -n 8 path_len_hex || break
read -n 8 data_len_hex || break
printf -v path_len "%d" "0x$path_len_hex"
printf -v data_len "%d" "0x$data_len_hex"
read -n "$path_len" path
mkdir -p "$(dirname "$out/$path")"
echo $path
if [ "$path" = "dustmod.bin.x86_64_dustmod" ]; then
dest="$out/dustmod.bin.x86_64"
else
dest="$out/$path"
fi
head -c "$data_len" > "$dest"
done
}
package() {
cd "$srcdir"
_installdir=/opt/dustforce-dustmod; _target="$pkgdir"/"$_installdir"
# install game files
mkdir -p "$pkgdir"/"$_installdir"
cp -TRl data/noarch "$pkgdir"/"$_installdir"
cp -TRl data/x86_64 "$pkgdir"/"$_installdir"
# include missing music track from Windows version
ln {"Dustforce DX","$pkgdir"/"$_installdir"}/"content/audio/music/Sun Bleach.ogg"
# install Dustmod
unzip -q "$srcdir"/linux64_drmfree -d "$pkgdir"/"$_installdir"/
# Apply Dustmod updates, which aren't distributed in the main download
unarchive-patch "$srcdir"/dustmod-patch "$pkgdir"/"$_installdir"
# Dustmod expects a version of curl we can't really obtain, but works with
# the version distributed with Dustforce
pushd "$pkgdir"/"$_installdir"/"lib64" > /dev/null
ln -s libcurl.so.{3,4}
popd > /dev/null
# fix permissions
find "$pkgdir" -type d -exec chmod 755 "{}" +
find "$pkgdir" -type f -exec chmod 644 "{}" +
chmod 755 "$_target"/Dustforce.bin.x86_64
chmod 755 "$_target"/dustmod.bin.x86_64
# install icon & desktop entry
install -Dm644 data/noarch/Dustforce.png \
"$pkgdir"/usr/share/pixmaps/dustforce-dustmod.png
install -Dm644 "$pkgname".desktop \
"$pkgdir"/usr/share/applications/"$pkgname".desktop
# install launcher
install -d "$pkgdir"/usr/bin
install -Dm755 dustforce-dustmod "$pkgdir"/usr/bin/dustforce-dustmod
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |