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-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 |