sdkman-bin
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 85%): The PKGBUILD sources its main binaries from official GitHub releases (sdkman/sdkman-cli and sdkman/sdkman-cli-native) with pinned SHA256 checksums, which is legitimate. The only concern is the runtime curl call to api.sdkman.io/2/candidates/all during package(), which fetches a list of available SDK candidates (plain text data) and writes it to var/candidates. This is the official SDKMAN API endpoint — the same one the tool itself uses at runtime. The fetched content is pure data (a comma-separated list of candidate names), not executed code or a binary. There is no checksum for this dynamic content, which is sloppy and makes builds non-reproducible, but the data itself is not executed. This is a low-severity packaging quality issue rather than a genuine supply-chain risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:37
curl -s "https://api.sdkman.io/2/candidates/all" -o "$pkgdir/$_sdkmandir/var/candidates"
PKGBUILD
1 offending line(s) highlighted# Maintainer: rintim <rintim@foxmail.com>
pkgname=sdkman-bin
pkgver=5.22.5
_nativepkgver=0.7.34
pkgrel=2
pkgdesc="The Software Development Kit Manager Command Line Interface"
arch=('x86_64' 'aarch64')
url="https://sdkman.io/"
license=('Apache-2.0')
depends=("curl")
provides=("${pkgname%-bin}=$pkgver")
conflicts=("${pkgname%-bin}")
_githuburl="https://github.com/sdkman/sdkman-cli/"
_githubnativeurl="https://github.com/sdkman/sdkman-cli-native/"
source_x86_64=("${pkgname%-bin}-$pkgver.zip::$_githuburl/releases/download/$pkgver/sdkman-cli-$pkgver.zip"
"${pkgname%-bin}-native-$_nativepkgver.zip::$_githubnativeurl/releases/download/v$_nativepkgver/sdkman-cli-native-$_nativepkgver-$CARCH-unknown-linux-gnu.zip")
source_aarch64=("${pkgname%-bin}-$pkgver.zip::$_githuburl/releases/download/$pkgver/sdkman-cli-$pkgver.zip"
"${pkgname%-bin}-native-$_nativepkgver.zip::$_githubnativeurl/releases/download/v$_nativepkgver/sdkman-cli-native-$_nativepkgver-$CARCH-unknown-linux-gnu.zip")
_zipdir="sdkman-$pkgver"
_zipnativedir="sdkman-cli-native-$_nativepkgver-$CARCH-unknown-linux-gnu"
_sdkmandir="/usr/lib/${pkgname%-bin}/libexec"
package() {
mkdir -p "$pkgdir/$_sdkmandir"
mkdir -p "$pkgdir/$_sdkmandir/tmp"
mkdir -p "$pkgdir/$_sdkmandir/ext"
mkdir -p "$pkgdir/$_sdkmandir/etc"
mkdir -p "$pkgdir/$_sdkmandir/var"
mkdir -p "$pkgdir/$_sdkmandir/candidates"
mkdir -p "$pkgdir/$_sdkmandir/libexec"
curl -s "https://api.sdkman.io/2/candidates/all" -o "$pkgdir/$_sdkmandir/var/candidates"
install -Dm755 "${srcdir}/$_zipdir/bin/sdkman-init.sh" -t "$pkgdir/$_sdkmandir/bin"
install -Dm644 "${srcdir}/$_zipdir/contrib/completion/bash/sdk" -t "$pkgdir/$_sdkmandir/contrib/completion/bash"
install -Dm755 "${srcdir}/$_zipdir/src"/* -t "$pkgdir/$_sdkmandir/src"
touch "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_auto_answer=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_auto_complete=true" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_auto_env=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_beta_channel=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_colour_enable=true" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_curl_connect_timeout=7" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_curl_max_time=10" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_debug_mode=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_insecure_ssl=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_rosetta2_compatible=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "sdkman_selfupdate_feature=false" >> "$pkgdir/$_sdkmandir/etc/config"
echo "$pkgver" > "$pkgdir/$_sdkmandir/var/version"
echo "$_nativepkgver" > "$pkgdir/$_sdkmandir/var/version_native"
if [ $CARCH = "x86_64" ]; then
echo "linuxx64" >> "$pkgdir/$_sdkmandir/var/platform"
elif [ $CARCH = "aarch64" ]; then
echo "linuxarm64" >> "$pkgdir/$_sdkmandir/var/platform"
fi
install -Dm755 "${srcdir}/$_zipnativedir/libexec"/* -t "$pkgdir/$_sdkmandir/libexec"
}
sha256sums_x86_64=('301de44c2455c061c8ac40fae194dd9287251115e34f8d86de68914510eb12c9'
'd268e17a36f6fae542bb38018f2bfadf60689c4c1de0bff2dcfdace0855ddf0a')
sha256sums_aarch64=('301de44c2455c061c8ac40fae194dd9287251115e34f8d86de68914510eb12c9'
'79b2747107aaeca1c4d3c1fea1178ec34210e43949633771b5c31f08c353ee7b')
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 |