gaze-hyprlock-bin
The package downloads a prebuilt Arch package from the project's own domain, which is not on the whitelist but plausibly official; the installed content is a PAM configuration file, not executable code, and the worst case of a swapped source is limited to config tampering.
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 a prebuilt Arch package from the project's own domain, which is not on the whitelist but plausibly official; the installed content is a PAM configuration file, not executable code, and the worst case of a swapped source is limited to config tampering.
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:19
source=("gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Gundu Labs <maintainers@gundulabs.com>
# Auto-generated by the packages publish script (build_aur_repo.sh). Do not edit manually.
pkgname=gaze-hyprlock-bin
pkgver=0.3.1
pkgrel=1
pkgdesc="Hyprlock PAM integration for Gaze"
arch=('x86_64' )
url="https://gaze.gundulabs.com"
license=('GPL-3.0-or-later' )
depends=()
optdepends=()
# This wrapper installs the same files under the same names as gaze-hyprlock, so it has
# to claim that name. Without it an AUR helper treats any other package called
# gaze-hyprlock as an upgrade candidate and silently replaces this one.
provides=('gaze-hyprlock=0.3.1-1')
conflicts=('gaze-hyprlock')
backup=('etc/pam.d/hyprlock-gaze' 'etc/pam.d/hyprlock-gaze-simultaneous' )
install='gaze-hyprlock-bin.install'
source=("gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst")
sha256sums=('6bea055c72d6d2e6a1ebec81bd1616d504a37f11541d80369f0c5bd22eebe0a1')
package() {
bsdtar -xpf "$srcdir/gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst" -C "$pkgdir"
# .PKGINFO/.MTREE/.INSTALL are pacman's metadata for the inner package and must not
# land in $pkgdir. The hooks .INSTALL carries are re-declared through install= above,
# which is the only way makepkg runs them for a wrapper package.
find "$pkgdir" -maxdepth 1 -type f -name '.*' -delete
}
Changes since previous scan
--- PKGBUILD @ 2026-09-13 00:19+++ PKGBUILD @ 2026-09-17 00:27@@ -1,7 +1,7 @@ # Maintainer: Gundu Labs <maintainers@gundulabs.com> # Auto-generated by the packages publish script (build_aur_repo.sh). Do not edit manually. pkgname=gaze-hyprlock-bin-pkgver=0.3.0+pkgver=0.3.1 pkgrel=1 pkgdesc="Hyprlock PAM integration for Gaze" arch=('x86_64' )@@ -12,15 +12,15 @@ # This wrapper installs the same files under the same names as gaze-hyprlock, so it has # to claim that name. Without it an AUR helper treats any other package called # gaze-hyprlock as an upgrade candidate and silently replaces this one.-provides=('gaze-hyprlock=0.3.0-1')+provides=('gaze-hyprlock=0.3.1-1') conflicts=('gaze-hyprlock') backup=('etc/pam.d/hyprlock-gaze' 'etc/pam.d/hyprlock-gaze-simultaneous' ) install='gaze-hyprlock-bin.install'-source=("gaze-hyprlock-0.3.0-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-hyprlock-0.3.0-1-x86_64.pkg.tar.zst")-sha256sums=('e83f637cdeb2d7a35cca3e1ac4932d748b6f7fa1256923716aaf28eba205d23f')+source=("gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst")+sha256sums=('6bea055c72d6d2e6a1ebec81bd1616d504a37f11541d80369f0c5bd22eebe0a1') package() {- bsdtar -xpf "$srcdir/gaze-hyprlock-0.3.0-1-x86_64.pkg.tar.zst" -C "$pkgdir"+ bsdtar -xpf "$srcdir/gaze-hyprlock-0.3.1-1-x86_64.pkg.tar.zst" -C "$pkgdir" # .PKGINFO/.MTREE/.INSTALL are pacman's metadata for the inner package and must not # land in $pkgdir. The hooks .INSTALL carries are re-declared through install= above, # which is the only way makepkg runs them for a wrapper package.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 01:13:16 | Medium | 1 |
| 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 01:20:11 | Medium | 1 |
| 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 03:13:17 | Medium | 1 |
| 2026-09-07 01:12:52 | Medium | 1 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-06 00:01:42 | Medium | 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 |