appflowy
The flagged pattern refers to a self-install via symlink in the package() function, which is standard for AUR packages to place binaries in PATH; no privileged operations, setuid, or sudoers modifications are present.
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 flagged pattern refers to a self-install via symlink in the package() function, which is standard for AUR packages to place binaries in PATH; no privileged operations, setuid, or sudoers modifications are present.
1 higher static finding superseded - not the current verdict (shown for transparency)
privileged_install
The package grants elevated privileges or installs an update path outside pacman: a /etc/sudoers.d rule (often passwordless), a setuid/setgid binary, or a self-update script/service that can fetch and run future code with no checksum verification. The initial install may be verified, but the ongoing privilege + update surface is a real supply-chain / privilege-escalation risk.
-
PKGBUILD:60
rustup toolchain install --no-self-update
PKGBUILD
1 offending line(s) highlighted# Maintainer: Sergey Kanafyev <sergeykanafyev@gmail.com>
# Automation: https://github.com/its-me/aur.appflowy
pkgname=appflowy
pkgver=0.14.3
pkgrel=1
pkgdesc="Open-source alternative to Notion – you own your data and customizations"
arch=('x86_64')
url="https://appflowy.com"
license=('AGPL-3.0-or-later')
conflicts=('appflowy-bin' 'appflowy-git')
depends=(
'glib2>=2.80'
'gst-plugins-base-libs'
'gtk3'
'hicolor-icon-theme'
'libkeybinder3'
'libnotify'
'rocksdb'
)
_flutter_ver=3.27.4
makedepends=(
'clang'
'cmake'
'git'
'ninja'
'pkg-config'
'sqlite'
'openssl'
'unzip'
'protobuf'
'rsync'
'rustup'
'cargo-make'
)
optdepends=(
'kdialog: file picker on KDE Plasma'
'zenity: file picker on GNOME/GTK'
)
options=('!lto' '!debug' '!buildflags')
source=(
"${pkgname}-${pkgver}.tar.gz::https://github.com/AppFlowy-IO/AppFlowy/archive/refs/tags/${pkgver}.tar.gz"
"flutter::git+https://github.com/flutter/flutter.git#tag=${_flutter_ver}"
"appflowy.desktop"
)
sha256sums=('d638d16074e677047d0e28ff2b7593e5c3210bb0d70c41a0225fc1c32c510981'
'41d2ef9589b0ff14b4c55a614933fb8f68307738882c8e6c454fc334d4952ce3'
'55c02d13249b333088ee452e76c8f36254e510651023549dc7e35efca02ca821')
prepare() {
export PATH="${srcdir}/flutter/bin:${PATH}"
cd "AppFlowy-${pkgver}/frontend"
# Upstream sets the real version at release time; the tag still carries a stale one
sed -i "s/^APPFLOWY_VERSION = .*/APPFLOWY_VERSION = \"${pkgver}\"/" Makefile.toml
sed -i "s/^version: .*/version: ${pkgver}/" appflowy_flutter/pubspec.yaml
# Install the Rust toolchain declared in rust-toolchain.toml (channel = "1.85")
rustup toolchain install --no-self-update
rustup target add ${CARCH}-unknown-linux-gnu
# Pre-fetch Rust crate dependencies
cargo fetch --manifest-path=rust-lib/Cargo.toml
# Fetch Flutter package dependencies
cd appflowy_flutter
flutter pub get
# Run code generation explicitly so it runs visibly and before cargo-make
cd ..
./scripts/code_generation/generate.sh --skip-pub-get
}
build() {
export PATH="${srcdir}/flutter/bin:${HOME}/.pub-cache/bin:${PATH}"
export CC=clang
export CXX=clang++
export ROCKSDB_LIB_DIR=/usr/lib
# hotkey_manager plugin has uninitialized variables that clang promotes to errors
export CXXFLAGS="-Wno-error=sometimes-uninitialized"
cd "AppFlowy-${pkgver}/frontend"
cargo make --profile production-linux-${CARCH} appflowy
}
package() {
cd "AppFlowy-${pkgver}/frontend"
# APPFLOWY_VERSION in Makefile.toml determines the product subdirectory name
local _appver
_appver=$(sed -n 's/^APPFLOWY_VERSION = "\(.*\)"/\1/p' Makefile.toml)
local _product="appflowy_flutter/product/${_appver}/linux/Release/AppFlowy"
# Install AppFlowy bundle
install -dm755 "${pkgdir}/usr/lib/AppFlowy"
cp -r "${_product}/." "${pkgdir}/usr/lib/AppFlowy/"
chmod 755 "${pkgdir}/usr/lib/AppFlowy/AppFlowy"
# Symlink into PATH
install -dm755 "${pkgdir}/usr/bin"
ln -s "/usr/lib/AppFlowy/AppFlowy" "${pkgdir}/usr/bin/appflowy"
# Desktop entry
install -Dm644 "${srcdir}/appflowy.desktop" \
"${pkgdir}/usr/share/applications/appflowy.desktop"
# Icons
install -Dm644 "appflowy_flutter/linux/packaging/assets/logo.png" \
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/appflowy.png"
install -Dm644 "appflowy_flutter/assets/images/flowy_logo.svg" \
"${pkgdir}/usr/share/icons/hicolor/scalable/apps/appflowy.svg"
install -Dm644 "../LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-16 00:03+++ PKGBUILD @ 2026-09-17 00:27@@ -2,7 +2,7 @@ # Automation: https://github.com/its-me/aur.appflowy pkgname=appflowy-pkgver=0.14.2+pkgver=0.14.3 pkgrel=1 pkgdesc="Open-source alternative to Notion – you own your data and customizations" arch=('x86_64')@@ -43,7 +43,7 @@ "flutter::git+https://github.com/flutter/flutter.git#tag=${_flutter_ver}" "appflowy.desktop" )-sha256sums=('59c5373962ec7da73e0259bcc909779feed0aa0f916a926265c62fc6a385d7a7'+sha256sums=('d638d16074e677047d0e28ff2b7593e5c3210bb0d70c41a0225fc1c32c510981' '41d2ef9589b0ff14b4c55a614933fb8f68307738882c8e6c454fc334d4952ce3' '55c02d13249b333088ee452e76c8f36254e510651023549dc7e35efca02ca821') Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 07:21:35 | Medium | 1 |
| 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 07:22:16 | Medium | 1 |
| 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 05:52:26 | Medium | 1 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |