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
3
pkgname=brother-ql800
4
pkgver=3.1.5r0
5
pkgrel=1
6
pkgdesc='LPR and CUPS driver for Brother QL-800 label printer'
7
url='https://support.brother.com'
8
arch=('i686' 'x86_64')
9
license=('custom')
10
depends=('cups')
11
install="${pkgname}.install"
12
source=("https://download.brother.com/welcome/dlfp100336/ql800pdrv-${pkgver/r/-}.i386.rpm")
13
sha256sums=('22c7d1ef1532df736bcb6439c512619290cae23ff8d3c67ec27c2fa43a653c73')
14
15
prepare()
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
74
package()
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) | Severity | Rules |
|---|---|---|
| 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 |