scrcpy-git
maintainer DaniCatGames
· 6 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The downloaded file is a prebuilt server binary from the project's own release script, verified with a checksum from the same source repository; this is a normal build step for scrcpy and not a supply-chain risk.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this HIGH, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The downloaded file is a prebuilt server binary from the project's own release script, verified with a checksum from the same source repository; this is a normal build step for scrcpy and not a supply-chain risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
HIGH
Downloaded file is executed
download_then_exec
A file fetched with curl/wget (not part of source=(), so never checksum-verified) is later made executable or run — a fetch-and-execute pattern split across statements.
-
PKGBUILD:46
-D prebuilt_server="../$_file" \
PKGBUILD
1 offending line(s) highlighted
1
# Merged with official ABS scrcpy PKGBUILD by João, 2023/05/14 (all respective contributors apply herein)
2
# Maintainer: Daniël Nazarkin <aur@danicatgames.nl>
3
# Contributor: João Figueiredo & chaotic-aur <islandc0der@chaotic.cx>
4
# Contributor: skydrome -at- protonmail
5
6
pkgname=scrcpy-git
7
pkgver=4.0_r3115.g1e085efc
8
pkgrel=1
9
pkgdesc='Display and control your Android device'
10
arch=('x86_64')
11
url='https://github.com/Genymobile/scrcpy'
12
license=(Apache-2.0)
13
depends=(android-tools ffmpeg sdl3 glibc libusb hicolor-icon-theme)
14
makedepends=(git meson)
15
conflicts=(${pkgname%-git})
16
provides=(${pkgname%-git})
17
source=("git+https://github.com/Genymobile/${pkgname%-git}.git#branch=dev")
18
sha256sums=('SKIP')
19
20
pkgver() {
21
cd ${pkgname%-git}
22
_ver="$(git describe | sed 's/^v//;s/-.*//')"
23
echo "${_ver}_r$(git rev-list --count HEAD).g$(git rev-parse --short HEAD)"
24
}
25
26
prepare() {
27
_url=$(grep '^PREBUILT_SERVER_URL=' "scrcpy/install_release.sh" | cut -d= -f2)
28
_sha256=$(grep '^PREBUILT_SERVER_SHA256=' "scrcpy/install_release.sh" | cut -d= -f2)
29
_file="${_url##*/}"
30
31
if [ ! -f "$_file" ]; then
32
curl -L -o "$_file" "$_url"
33
fi
34
35
echo "$_sha256 $_file" | sha256sum --check || {
36
echo "Error: server checksum failed"
37
exit 1
38
}
39
}
40
41
build() {
42
mkdir -p build
43
arch-meson build ${pkgname%-git} \
44
-D b_lto=true \
45
-D b_ndebug=true \
46
-D prebuilt_server="../$_file" \
47
--buildtype release
48
ninja -C build
49
}
50
51
package() {
52
DESTDIR="$pkgdir" ninja -C build install
53
install -Dm644 ${pkgname%-git}/LICENSE -t "$pkgdir/usr/share/licenses/$pkgname"
54
}
55
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 |