From 7b826f66c4e902259b0fec5b4530383de6538ad5 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 17 Jul 2026 17:03:10 +0200 Subject: [PATCH] Venv-Audit: grep -c Zaehl-Bug (doppelte Zeile -> Rechenfehler) Erstlauf-Befund: "grep -c ... || echo 0" haengte bei 0 Treffern eine zweite Zeile an (grep -c druckt selbst schon "0") -> "integer expected" + kaputte Summe. || echo 0 raus, Ergebnis auf Ziffern reduziert. Fund selbst war echt: 1 CVE in mem0, 27 Pakete veraltet. Co-Authored-By: Claude Fable 5 --- deploy/venv-audit.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/deploy/venv-audit.sh b/deploy/venv-audit.sh index 97d3e40..da484c6 100644 --- a/deploy/venv-audit.sh +++ b/deploy/venv-audit.sh @@ -46,8 +46,11 @@ for EINTRAG in "${VENVS[@]}"; do ZEILEN+=("$NAME: venv fehlt/unlesbar unter $VENV — bitte prüfen") continue fi - # Veraltete Pakete (Anzahl reicht fürs Lagebild) - ALT_N="$("$AUDIT_VENV/bin/pip" list --outdated --path "$SP" 2>/dev/null | tail -n +3 | grep -c '' || echo 0)" + # Veraltete Pakete (Anzahl reicht fürs Lagebild). grep -c druckt IMMER genau eine + # Zahl → KEIN "|| echo 0" (das hängte eine zweite Zeile an → Rechenfehler, Befund + # 17.07.); zur Sicherheit auf Ziffern reduzieren. + ALT_N="$("$AUDIT_VENV/bin/pip" list --outdated --path "$SP" 2>/dev/null | tail -n +3 | grep -c '.')" + ALT_N="${ALT_N//[!0-9]/}"; ALT_N="${ALT_N:-0}" # CVE-Prüfung gegen den eingefrorenen Stand (lokale Pfade/Editables ausfiltern) "$AUDIT_VENV/bin/pip" list --format=freeze --path "$SP" 2>/dev/null \ | grep -vE ' @ |^-e |^#' > "$TMP/$NAME.txt" || true @@ -57,7 +60,8 @@ for EINTRAG in "${VENVS[@]}"; do if printf '%s' "$AUDIT_OUT" | grep -qi 'No known vulnerabilities'; then CVE_N=0 else - CVE_N="$(printf '%s\n' "$AUDIT_OUT" | grep -cE '^[a-zA-Z0-9_.-]+ +[0-9][^ ]* +(GHSA|PYSEC|CVE)' || echo 0)" + CVE_N="$(printf '%s\n' "$AUDIT_OUT" | grep -cE '^[a-zA-Z0-9_.-]+ +[0-9][^ ]* +(GHSA|PYSEC|CVE)')" + CVE_N="${CVE_N//[!0-9]/}"; CVE_N="${CVE_N:-0}" if [ "${CVE_N:-0}" -gt 0 ]; then CVE_DETAILS="${CVE_DETAILS} == ${NAME} ==