libgourou-utils
libgourou
scanned 2026-10-20 00:10:31.152894
The package builds from source hosted on the project's own forge, which is plausibly legitimate despite not being on a standard platform; the external cookie fetch is part of accessing a legitimately required resource from the same domain and does not introduce untrusted code execution; the orphaned/re-adopted status does not affect package safety.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 90%): The package builds from source hosted on the project's own forge, which is plausibly legitimate despite not being on a standard platform; the external cookie fetch is part of accessing a legitimately required resource from the same domain and does not introduce untrusted code execution; the orphaned/re-adopted status does not affect package safety.
2 higher static findings superseded - not the current verdict (shown for transparency)
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:27
_cookie=$(curl -s https://forge.soutade.fr/402.html | sed -nE 's/.*document\.cookie = "([^;"]*).*/\1/p')
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:24
source=("libgourou-$pkgver.tar.gz::https://forge.soutade.fr/soutade/libgourou/archive/v$pkgver.tar.gz")
PKGBUILD
2 offending line(s) highlighted# Maintainer: Radon Rosborough <radon@radian.codes>
# Maintainer: Ketchup901 <ketchup901@riseup.net>
pkgbase="libgourou"
pkgname=("libgourou" "libgourou-utils")
pkgver=0.8.10
pkgrel=4
pkgdesc="Free implementation of Adobe's ADEPT protocol used to add DRM on EPUB/PDF files"
arch=('any')
license=('LGPL-3.0-or-later' 'BSD-3-Clause')
url="https://forge.soutade.fr/soutade/libgourou"
depends=(
'updfparser'
'glibc'
'libgcc'
'libstdc++'
'pugixml'
'zlib'
'libzip'
'openssl'
'curl'
)
conflicts=('gourou-git' 'gourou-bin' 'gourou-appimage')
source=("libgourou-$pkgver.tar.gz::https://forge.soutade.fr/soutade/libgourou/archive/v$pkgver.tar.gz")
sha512sums=('bf9c4341f45b1fe77a9c95b5844da7ac5cc96b0edf7ef39caf11b980e82765f6a7c5932aaee998df002b965215cd7fbae2606dbbb86da12f88eafa830e7c5c14')
# For dealing with the humanity check
_cookie=$(curl -s https://forge.soutade.fr/402.html | sed -nE 's/.*document\.cookie = "([^;"]*).*/\1/p')
DLAGENTS=("https::/usr/bin/curl -b $_cookie -o %o %u")
build() {
cd libgourou
# We want to link dynamically, but UPDFPARSERLIB needs to point to a valid file so we point it to /dev/null
make \
BUILD_STATIC=0 \
BUILD_SHARED=1 \
UPDFPARSERLIB="/dev/null" \
LDFLAGS="-lpugixml -lupdfparser -Wl,-z,relro,-z,now" \
obj libgourou
cd utils
make ROOT=.. DEBUG=1
}
package_libgourou() {
license=('LGPL-3.0-or-later')
depends=(
'updfparser'
'glibc'
'libgcc'
'libstdc++'
'pugixml'
)
cd libgourou
install -Dm755 "libgourou.so.$pkgver" -t "$pkgdir/usr/lib"
ln -s "libgourou.so.$pkgver" "$pkgdir/usr/lib/libgourou.so"
make DESTDIR="$pkgdir" PREFIX="/usr" install_headers
}
package_libgourou-utils() {
pkgdesc="Downloading and decrypting tools for Adobe encrypted (ACSM) EPUB/PDF files"
license=('BSD-3-Clause')
depends=(
'libgourou'
'glibc'
'libgcc'
'libstdc++'
'pugixml'
'zlib'
'libzip'
'openssl'
'curl'
)
provides=("gourou=${pkgver}")
replaces=('gourou')
cd libgourou/utils
make DESTDIR="$pkgdir" PREFIX="/usr" install
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/utils-LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-20 00:10:31 | Low | 3 |
| 2026-10-19 00:03:55 | Low | 3 |
| 2026-10-18 00:06:55 | Low | 3 |
| 2026-10-17 00:21:55 | Low | 3 |
| 2026-10-16 00:12:47 | Low | 3 |
| 2026-10-15 00:28:05 | Low | 4 |
| 2026-10-14 00:06:47 | Low | 4 |
| 2026-10-13 00:23:45 | Low | 4 |
| 2026-10-12 00:18:51 | Low | 4 |
| 2026-10-11 00:26:05 | Low | 4 |
| 2026-10-10 00:11:52 | Low | 4 |
| 2026-10-09 00:05:33 | Low | 4 |
| 2026-10-08 00:28:03 | Low | 4 |
| 2026-10-07 00:21:34 | Low | 4 |
| 2026-10-06 00:13:36 | Low | 4 |
| 2026-10-05 00:08:03 | Low | 4 |
| 2026-10-04 00:18:08 | Low | 4 |
| 2026-10-03 00:23:04 | Low | 4 |
| 2026-10-02 00:00:32 | Low | 4 |
| 2026-10-01 00:02:06 | Low | 4 |