brother-ql800

maintainer kbabioch · 3 votes · scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged 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

LOW AI review downgraded a static finding 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)
MEDIUM source=() URL on a non-standard host 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
1# Maintainer: Karol Babioch <karol@babioch.de>
2
3pkgname=brother-ql800
4pkgver=3.1.5r0
5pkgrel=1
6pkgdesc='LPR and CUPS driver for Brother QL-800 label printer'
7url='https://support.brother.com'
8arch=('i686' 'x86_64')
9license=('custom')
10depends=('cups')
11install="${pkgname}.install"
12source=("https://download.brother.com/welcome/dlfp100336/ql800pdrv-${pkgver/r/-}.i386.rpm")
13sha256sums=('22c7d1ef1532df736bcb6439c512619290cae23ff8d3c67ec27c2fa43a653c73')
14
15prepare()
16{
17 # Create necessary CUPS directories
18 install -d "${srcdir}/usr/share/cups/model"
19 install -d "${srcdir}/usr/lib/cups/filter"
20 install -d "${srcdir}/usr/bin"
21
22 # Locate cupswrapper script
23 _cupswrapper=$(find "${srcdir}/opt/brother/PTouch/" -type f -name 'cupswrapper*')
24 echo "cupswrapper: ${_cupswrapper}"
25
26 # Locate lpdwrapper script / symlink
27 _lpdwrapper=$(find "${srcdir}/opt/brother/PTouch/" -name "brother_lpdwrapper_*")
28 echo "lpdwrapper: ${_lpdwrapper}"
29
30 # Basename of lpdwrapper script
31 _lpdwrapper_basename="$(basename "${_lpdwrapper}")"
32 echo "lpdwrapper_basename: ${_lpdwrapper_basename}"
33
34 # Get model name of driver based on name from lpdwrapper script (e.g. brother_lpdwrapper_ql720nw -> ql720nw)
35 _model="${_lpdwrapper_basename##brother_lpdwrapper_}"
36 echo "model: ${_model}"
37
38 # Patch cupswrapper script
39 sed -i '/^sleep/d' ${_cupswrapper}
40 sed -i '/^echo lpadmin/d' ${_cupswrapper}
41 sed -i '/^lpadmin/d' ${_cupswrapper}
42 sed -i "s|/usr|${srcdir}/usr|g" ${_cupswrapper}
43 sed -i "s|/opt|${srcdir}/opt|g" ${_cupswrapper}
44 sed -i "s|/model/Brother|/model|g" ${_cupswrapper}
45 sed -i 's|lpinfo|echo|g' ${_cupswrapper}
46
47 # Remove potential symlink (from previous runs)
48 rm -f "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
49
50 # Invoke cupswrapper script
51 export srcdir=${srcdir}
52 ${_cupswrapper}
53
54 # Patch resulting filter
55 sed -i "s|${srcdir}||" "${_lpdwrapper}"
56
57 # Remove unneeded script (i.e. /etc/printcap is managed by CUPS)
58 rm $(find "${srcdir}" -type f -name 'setupPrintcap*')
59
60 # Make symlink absolute
61 rm "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
62 ln -s "/opt/brother/PTouch/${_model}/cupswrapper/${_lpdwrapper_basename}" "${srcdir}/usr/lib/cups/filter/${_lpdwrapper_basename}"
63
64 # Move arch-specific binaries into the correct locations
65 mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brpapertoolcups" "${srcdir}/opt/brother/PTouch/${_model}/lpd"
66 mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/rastertobrpt1" "${srcdir}/opt/brother/PTouch/${_model}/lpd"
67 mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brpapertoollpr_${_model}" "${srcdir}/usr/bin"
68 mv "${srcdir}/opt/brother/PTouch/${_model}/lpd/${CARCH}/brprintconfpt1_${_model}" "${srcdir}/usr/bin"
69
70 # Remove unneeded binaries / directories (for other architectures, etc.)
71 rm -r "${srcdir}/opt/brother/PTouch/${_model}/lpd/"{i686,x86_64}
72}
73
74package()
75{
76 # Install actual content
77 cp -R "${srcdir}/usr" "${pkgdir}"
78 cp -R "${srcdir}/opt" "${pkgdir}"
79
80 # Set some file ownerships and permissions
81 # infdir, e.g. /opt/brother/PTouch/ql720nw/inf/
82 _infdir=$(find "${pkgdir}/opt/brother/PTouch/" -type d -name 'inf')
83 chown root:lp ${_infdir}
84 chmod 775 ${_infdir}
85 # rcfile, e.g. /opt/brother/PTouch/ql720nw/inf/brql720nwrc
86 _rcfile=$(find "${pkgdir}/opt/brother/PTouch/" -type f -name '*rc')
87 chown daemon:lp ${_rcfile}
88 chmod 664 ${_rcfile}
89
90 # Handle licenses
91 install -d "${pkgdir}/usr/share/licenses/${pkgname}"
92 find "${pkgdir}" -type f -name 'LICENSE*.txt' -exec mv -t "${pkgdir}/usr/share/licenses/${pkgname}" {} +
93}
94

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 LOW 2
2026-08-02 00:16:08 LOW 2
2026-08-01 00:11:18 LOW 2
2026-07-31 00:14:10 LOW 2
2026-07-30 00:17:23 LOW 2
2026-07-29 00:25:53 LOW 2
2026-07-28 00:07:28 LOW 2
2026-07-27 00:24:32 LOW 2
2026-07-26 00:07:32 LOW 2
2026-07-25 00:13:44 LOW 2
2026-07-24 00:02:28 LOW 2
2026-07-23 00:14:47 LOW 2
2026-07-22 00:29:32 LOW 2
2026-07-21 00:24:15 LOW 2
2026-07-20 00:19:49 LOW 2
2026-07-19 00:17:08 LOW 2
2026-07-18 00:14:48 LOW 2
2026-07-17 00:06:16 LOW 2
2026-07-16 00:05:41 LOW 2
2026-07-15 00:09:25 LOW 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion