gaomontablet-m5-driver
The package downloads the official driver source from the vendor's domain (gaomon.cn), which is plausible and expected; the non-whitelisted host is the vendor's own, and the checksums are verified, making it a legitimate build of vendor-provided software with no evidence of remote code execution or supply-chain compromise.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads the official driver source from the vendor's domain (gaomon.cn), which is plausible and expected; the non-whitelisted host is the vendor's own, and the checksums are verified, making it a legitimate build of vendor-provided software with no evidence of remote code execution or supply-chain compromise.
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:16
source=("https://driver.gaomon.cn/download/Driver/Linux/GaomonTablet_LinuxDriver_v${pkgver}.${CARCH}.tar.xz"
PKGBUILD
1 offending line(s) highlighted# Maintainer: OneZ3r0 <onez3r0@outlook.com>
pkgname=gaomontablet-m5-driver
pkgver=16.0.0.49
pkgrel=1
pkgdesc="Official Gaomon Tablet Linux Driver (M5 V2)"
arch=('x86_64')
url="https://www.gaomon.cn/"
license=('0BSD' 'LGPL')
depends=('xdotool' 'libx11' 'libxext' 'libxtst')
options=('!strip')
install="${pkgname}.install"
# add UA and Referer in order to download Official Driver
DLAGENTS=('https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -A Mozilla/5.0 -e https://www.gaomon.cn/download -o %o %u')
source=("https://driver.gaomon.cn/download/Driver/Linux/GaomonTablet_LinuxDriver_v${pkgver}.${CARCH}.tar.xz"
"LICENSE")
sha256sums=('dfb157de665818eecb786b45bacc8bf6b737484ef240567c92a77a993bfe358b'
'150b7f86555bd68e638ababa1895ba2e5caed4efaa380235b00db6f5b59ac1d9')
package() {
cd "${srcdir}"
# Install main application files
install -d "${pkgdir}/usr/lib/gaomontablet"
cp -r gaomon/gaomontablet/* "${pkgdir}/usr/lib/gaomontablet/"
# Remove bundled xdotool/libxdo — use system packages via depends instead
rm -rf "${pkgdir}/usr/lib/gaomontablet/xdotool"
# Runtime dot-files (.HuionCore.pid, .DriverUI.pid, .huion.log) are not
# copied here: bash's * glob excludes dot-files, so they never enter pkgdir.
# They are created at runtime by the driver in /usr/lib/gaomontablet/.
# Set executable permissions
chmod 755 "${pkgdir}/usr/lib/gaomontablet/"*.sh
chmod 755 "${pkgdir}/usr/lib/gaomontablet/huionCore"
chmod 755 "${pkgdir}/usr/lib/gaomontablet/gaomontablet"
# Udev rules
install -Dm644 gaomon/gaomontablet/res/rule/20-gaomon.rules \
"${pkgdir}/usr/lib/udev/rules.d/20-gaomon.rules"
# Desktop entry — application menu only, no autostart
install -Dm644 gaomon/xdg/autostart/gaomontablet.desktop \
"${pkgdir}/usr/share/applications/gaomontablet.desktop"
# Replace absolute icon path with a theme-friendly icon name
sed -i 's|^Icon=.*|Icon=gaomontablet|' \
"${pkgdir}/usr/share/applications/gaomontablet.desktop"
# Icon
install -Dm644 gaomon/icon/gaomontablet.png \
"${pkgdir}/usr/share/pixmaps/gaomontablet.png"
# License
install -Dm644 "${srcdir}/LICENSE" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 gaomon/gaomontablet/LGPL \
"${pkgdir}/usr/share/licenses/${pkgname}/LGPL"
# tmpfiles.d: restore writable permissions on config/log files at each boot.
# The driver runs as a regular user and must write to files under /usr/lib.
# Using tmpfiles.d is the standard Arch approach for closed-source drivers.
install -Dm644 /dev/stdin \
"${pkgdir}/usr/lib/tmpfiles.d/${pkgname}.conf" <<'EOF'
# Gaomon tablet driver — allow non-root driver process to write configuration.
# Z adjusts permissions recursively (directory + all contents); z is non-recursive (single path).
Z /usr/lib/gaomontablet/res 0777 root root -
z /usr/lib/gaomontablet/log.conf 0666 root root -
EOF
}
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 |