From 222a58130471a798989797dc39bfa43f1202f87e Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Fri, 10 Jul 2026 22:21:11 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20#124:=20Testerfolg=20in=20update.sh=20per?= =?UTF-8?q?=20Exit-Code=20statt=20Textsuche=20pr=C3=BCfen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Changes.md | 5 +++++ scripts/update.sh | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Changes.md b/Changes.md index 98313c7..6da9de4 100644 --- a/Changes.md +++ b/Changes.md @@ -2,6 +2,11 @@ --- +## 2026-07-10 – Fix: `update.sh` meldet Testfehler per Textsuche statt Exit-Code (Issue #124) + +- **Niedrig:** `scripts/update.sh` prüfte den Erfolg der Test-Suite nicht über den Exit-Code von `tests/run.php`, sondern per `grep` nach den Wörtern „FEHLER“, „FAILED“, „fehlgeschlagen“ bzw. „failed“ im Test-Output. Diese Wörter kommen jedoch auch in Testdaten und erwarteten Fehlermeldungen bestandener Tests vor (z.B. Test 47 EventLog, Test 50 SMTP), sodass trotz „✓ Alle Tests bestanden“ eine falsche Warnung ausgegeben wurde. Zusätzlich war `TEST_EXIT=${PIPESTATUS[0]:-0}` wirkungslos, da `PIPESTATUS` sich nicht auf die vorangegangene Command-Substitution bezieht. +- **`scripts/update.sh`:** Exit-Code von `docker compose exec ... tests/run.php` wird nun direkt über `if TEST_OUTPUT=$(...); then ... else TEST_EXIT=$?; fi` erfasst (kompatibel mit `set -e`) und für die Erfolgsmeldung ausgewertet, statt den Output nach Schlüsselwörtern zu durchsuchen. + ## 2026-07-10 – Fix: Session-Cookie ohne Secure-, HttpOnly- und SameSite-Attribute (Issue #121) - **Mittel-Hoch:** `session_start()` wurde an acht Stellen (`src/Auth.php`, `src/View.php`, `src/Controllers/LoginController.php`) unkonfiguriert aufgerufen; `session.cookie_httponly`, `session.cookie_secure` und `session.cookie_samesite` liefen auf den PHP-Compiled-in-Defaults (aus/leer). Das Session-Cookie – Zugriff auf sämtliche Mandanten-/Steuerdaten – war damit per JavaScript auslesbar (volle Session-Übernahme bei jeder Art von XSS) und unterlag keiner `SameSite`-Beschränkung (CWE-614/CWE-1004). diff --git a/scripts/update.sh b/scripts/update.sh index 6340006..5f45a0f 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -323,12 +323,15 @@ if [[ "$OPT_NO_TESTS" == "true" ]]; then warn "Tests übersprungen (--no-tests)" else info "Führe Test-Suite aus..." - TEST_OUTPUT=$(docker compose exec -T web php /var/www/html/tests/run.php 2>&1) || true - TEST_EXIT=${PIPESTATUS[0]:-0} + if TEST_OUTPUT=$(docker compose exec -T web php /var/www/html/tests/run.php 2>&1); then + TEST_EXIT=0 + else + TEST_EXIT=$? + fi echo "$TEST_OUTPUT" | while read -r line; do info "$line"; done - if echo "$TEST_OUTPUT" | grep -q "FEHLER\|FAILED\|fehlgeschlagen\|failed"; then + if [[ "$TEST_EXIT" -ne 0 ]]; then warn "Einige Tests sind fehlgeschlagen – bitte prüfen" warn "Vollständiger Testlauf: docker compose exec web php tests/run.php" else