brother-ql800
The package downloads a Brother driver RPM from an official Brother download domain, which is a legitimate source for the software; the non-whitelisted host is part of Brother's official support infrastructure, and the build process unpacks and repackages the official driver without executing arbitrary remote code or introducing untrusted binaries.
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 Brother driver RPM from an official Brother download domain, which is a legitimate source for the software; the non-whitelisted host is part of Brother's official support infrastructure, and the build process unpacks and repackages the official driver without executing arbitrary remote code or introducing untrusted binaries.
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:12
source=("https://download.brother.com/welcome/dlfp100336/ql800pdrv-${pkgver/r/-}.i386.rpm")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Karol Babioch <karol@babioch.de>
pkgname=brother-ql800
pkgver=3.1.5r0
pkgrel=1
pkgdesc='LPR and CUPS driver for Brother QL-800 label printer'
url='https://support.brother.com'
arch=('i686' 'x86_64')
license=('custom')
depends=('cups')
install="${pkgname}.install"
source=("https://download.brother.com/welcome/dlfp100336/ql800pdrv-${pkgver/r/-}.i386.rpm")
sha256sums=('22c7d1ef1532df736bcb6439c512619290cae23ff8d3c67ec27c2fa43a653c73')
prepare()
{
# Create necessary CUPS directories
install -d "${srcdir}/usr/share/cups/model"
install -d "${srcdir}/usr/lib/cups/filter"
install -d "${srcdir}/usr/bin"
# Locate cupswrapper script
_cupswrapper=$(find "${srcdir}/opt/brother/PTouch/" -type f -name 'cupswrapper*')
echo "cupswrapper: ${_cupswrapper}"
# Locate lpdwrapper script / symlink
_lpdwrapper=$(find "${srcdir}/opt/brother/PTouch/" -name "brother_lpdwrapper_*")
echo "lpdwrapper: ${_lpdwrapper}"
# Basename of lpdwrapper script
_lpdwrapper_basename="$(basename "${_lpdwrapper}")"
echo "lpdwrapper_basename: ${_lpdwrapper_basename}"
# Get model name of driver based on name from lpdwrapper script (e.g. brother_lpdwrapper_ql720nw -> ql720nw)
_model="${_lpdwrapper_basename##brother_lpdwrapper_}"
echo "model: ${_model}"
# Patch cupswrapper script
sed -i '/^sleep/d' ${_cupswrapper}
sed -i '/^echo lpadmin/d' ${_cupswrapper}
sed -i '/^lpadmin/d' ${_cupswrapper}
sed -i "s|/usr|${srcdir}/usr|g" ${_cupswrapper}
sed -i "s|/opt|${srcdir}/opt|g" ${_cupswrapper}
sed -i "s|/model/Brother|/model|g" ${_cupswrapper}
sed -i 's|lpinfo|echo|g' ${_cupswrapper}
# Remove potential symlink (from previous runs)
rm -f "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
# Invoke cupswrapper script
export srcdir=${srcdir}
${_cupswrapper}
# Patch resulting filter
sed -i "s|${srcdir}||" "${_lpdwrapper}"
# Remove unneeded script (i.e. /etc/printcap is managed by CUPS)
rm $(find "${srcdir}" -type f -name 'setupPrintcap*')
# Make symlink absolute
rm "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
ln -s "/opt/brother/PTouch/${_model}/cupswrapper/${_lpdwrapper_basename}" "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
# Move arch-specific binaries into the correct locations
mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brpapertoolcups" "${srcdir}/opt/brother/PTouch/${_model}/lpd"
mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/rastertobrpt1" "${srcdir}/opt/brother/PTouch/${_model}/lpd"
mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brpapertoollpr_${_model}" "${srcdir}/usr/bin"
mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brprintconfpt1_${_model}" "${srcdir}/usr/bin"
# Remove unneeded binaries / directories (for other architectures, etc.)
rm -r "${srcdir}/opt/brother/PTouch/${_model}/lpd/"{i686,x86_64}
}
package()
{
# Install actual content
cp -R "${srcdir}/usr" "${pkgdir}"
cp -R "${srcdir}/opt" "${pkgdir}"
# Set some file ownerships and permissions
# infdir, e.g. /opt/brother/PTouch/ql720nw/inf/
_infdir=$(find "${pkgdir}/opt/brother/PTouch/" -type d -name 'inf')
chown root:lp ${_infdir}
chmod 775 ${_infdir}
# rcfile, e.g. /opt/brother/PTouch/ql720nw/inf/brql720nwrc
_rcfile=$(find "${pkgdir}/opt/brother/PTouch/" -type f -name '*rc')
chown daemon:lp ${_rcfile}
chmod 664 ${_rcfile}
# Handle licenses
install -d "${pkgdir}/usr/share/licenses/${pkgname}"
find "${pkgdir}" -type f -name 'LICENSE*.txt' -exec mv -t "${pkgdir}/usr/share/licenses/${pkgname}" {} +
}
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 |