paintstorm
The package downloads a self-extracting installer and a library source tarball from the project's official and SourceForge URLs; building from official project sources, even on non-whitelisted hosts, is standard for AUR and not inherently dangerous.
Triggered rules
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 self-extracting installer and a library source tarball from the project's official and SourceForge URLs; building from official project sources, even on non-whitelisted hosts, is standard for AUR and not inherently dangerous.
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:33
"$_filename.$_pkgext"::"https://www.paintstormstudio.com/$_filename.$_pkgext"
PKGBUILD
1 offending line(s) highlighted# Maintainer:
# Contributor: mditto <michael.r.ditto@gmail.com>
_pkgname="paintstorm"
pkgname="$_pkgname"
pkgver=2.50
pkgrel=2
pkgdesc="Professional software for digital painting"
url="https://www.paintstormstudio.com"
license=('LicenseRef-Paintstorm')
arch=('x86_64')
depends=(
'ftgl'
'gtk2'
'libcurl-gnutls'
'libgl'
)
makedepends=(
'html-xml-utils'
'patchelf'
'w3m'
)
options=('!strip' '!debug' 'emptydirs')
_glew_pkgver=1.13.0
_glew_pkgsrc="glew-$_glew_pkgver"
_filename="Paintstorm_linux_v${pkgver}.run"
_pkgext="tar.gz"
source=(
"$_filename.$_pkgext"::"https://www.paintstormstudio.com/$_filename.$_pkgext"
"$_glew_pkgsrc.$_pkgext"::"https://downloads.sourceforge.net/glew/$_glew_pkgsrc.tgz"
)
sha256sums=(
'aaa581752027b3445578dfc9dc3e72048194f4908291eaf11c60b91947ac35c1'
'aa25dc48ed84b0b64b8d41cdd42c8f40f149c37fa2ffa39cd97f42c78d128bc7'
)
_privacy_policy="privacy_policy"
_privacy_policy_url="https://www.paintstormstudio.com/help/privacy-policy/"
_terms_of_use="terms_of_use"
_terms_of_use_url="https://www.paintstormstudio.com/help/license-agreement/"
prepare() {
# glew
sed -i 's|lib64|lib|' "$_glew_pkgsrc"/config/Makefile.linux
# extract files
sh "$_filename" --noexec
# delete junk .* files
find "$srcdir/PaintstormInstall/paintstorm" -type f -name '.*' -delete
find "$srcdir/PaintstormInstall/paintstorm" -type f -iname '~*' -delete
# privacy policy
curl --no-progress-meter \
-o "$_privacy_policy-1.html" \
"$_privacy_policy_url"
hxnormalize -x "$_privacy_policy-1.html" \
| hxselect article \
1> "$_privacy_policy-2.html" \
2> /dev/null
w3m -O UTF-8 -cols 80 -dump "$_privacy_policy-2.html" > "$_privacy_policy.txt"
# terms of use
curl --no-progress-meter \
-o "$_terms_of_use-1.html" \
"$_terms_of_use_url"
hxnormalize -x "$_terms_of_use-1.html" \
| hxselect article \
1> "$_terms_of_use-2.html" \
2> /dev/null
w3m -O UTF-8 -cols 80 -dump "$_terms_of_use-2.html" > "$_terms_of_use.txt"
}
build() {
cd "$_glew_pkgsrc"
make
}
package() {
# files
install -dm755 "$pkgdir/usr"/{bin,share}
mv PaintstormInstall/paintstorm "$pkgdir/usr/share/"
# launcher
install -Dm755 "PaintstormInstall/paintstorm.desktop" -t "$pkgdir/usr/share/applications/"
# rpath
patchelf --set-rpath '$ORIGIN' "$pkgdir/usr/share/paintstorm/Paintstorm"
# symlink
ln -srf "$pkgdir/usr/share/paintstorm/Paintstorm" "$pkgdir/usr/bin/paintstorm"
# glew
install -Dm644 "$_glew_pkgsrc"/lib/libGLEW.so* -t "$pkgdir/usr/share/paintstorm/"
# prevent crash
install -Dm644 /dev/null "$pkgdir/usr/share/fonts/opentype/.paintstorm"
install -Dm644 /dev/null "$pkgdir/usr/share/fonts/truetype/.paintstorm"
# license/eula
install -Dm644 "$_privacy_policy.txt" -t "$pkgdir/usr/share/licenses/$pkgname"
install -Dm644 "$_terms_of_use.txt" -t "$pkgdir/usr/share/licenses/$pkgname"
}
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 |