latex-tuda-ci-logos-sanity
The package downloads a PDF from the official university domain to extract a logo, which is a legitimate use case; the source host, while not a standard forge, is the official TU Darmstadt media server, making the risk low despite the non-whitelisted domain.
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 a PDF from the official university domain to extract a logo, which is a legitimate use case; the source host, while not a standard forge, is the official TU Darmstadt media server, making the risk low despite the non-whitelisted domain.
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:14
source=("das_bild_der_tu_darmstadt.pdf::https://www.tu-darmstadt.de/media/medien_stabsstelle_km/services/medien_cd/das_bild_der_tu_darmstadt.pdf")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Ruben Deisenroth (Discord: Rubosplay#0815) <ruben.deisenroth@stud.tu-darmstadt.de>
pkgname=latex-tuda-ci-logos-sanity
pkgver=1.2.0
pkgrel=1
pkgdesc="Logos for TUDa-CI from Technische Universität Darmstadt - Sane Version that automatically fetches the logo from the corporate design book instead of relying on the user to download them"
arch=("any")
url="https://www.ulb.tu-darmstadt.de/finden_nutzen/medien_nutzen/dokumente_erstellen/latex/index.en.jsp"
license=("CC-BY-4.0")
depends=()
conflicts=("latex-tuda-ci-logos")
provides=("latex-tuda-ci-logos")
makedepends=("librsvg" "inkscape>=1.3")
source=("das_bild_der_tu_darmstadt.pdf::https://www.tu-darmstadt.de/media/medien_stabsstelle_km/services/medien_cd/das_bild_der_tu_darmstadt.pdf")
sha256sums=('6dbfd0054e8a91565b97b2399f864a91f2fc49ed0449b2923bdeac3d6b633398')
# Build Package
package() {
cd "${srcdir}"
# the logo is present on page one of the PDF, so we extract it
inkscape das_bild_der_tu_darmstadt.pdf --export-filename=p1_i.svg --export-dpi=300 --pages=1
# now we have to remove all the ICC stuff, as it is not supported by rsvg-convert (and doesn't matter for a B/W logo)
sed -i 's/icc-color([^)]*)//g' p1_i.svg
# Also for some reason, the logo isn't quite black, so we fix that as well
sed -i 's/#000000/#1d1d1bff/g' p1_i.svg
# now we extract the logo from the SVG and export the logo as PDF
if ! rsvg-convert -f pdf -o tuda_logo.pdf p1_i.svg --export-id=g20; then
echo "Warning: PDF conversion failed."
echo "This may be due to ImageMagick's security policy settings."
echo "To fix this, modify /etc/ImageMagick-6/policy.xml as follows:"
echo " - Change rights=\"none\" to rights=\"read|write\" for the PDF, PS, and SVG patterns."
echo " - Example:"
echo " sed -i 's/rights=\"none\" pattern=\"PDF\"/rights=\"read|write\" pattern=\"PDF\"/' /etc/ImageMagick-6/policy.xml"
echo " sed -i 's/rights=\"none\" pattern=\"PS\"/rights=\"read|write\" pattern=\"PS\"/' /etc/ImageMagick-6/policy.xml"
echo " sed -i 's/rights=\"none\" pattern=\"SVG\"/rights=\"read|write\" pattern=\"SVG\"/' /etc/ImageMagick-6/policy.xml"
exit 1
fi
# Install
install -Dm644 tuda_logo.pdf "${pkgdir}/$(kpsewhich -var-value TEXMFDIST)/tex/latex/tuda-ci/tuda_logo.pdf"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |