Skip to content

Commit 0c2123f

Browse files
Merge branch 'main' into dependabot/cargo/eframe-0.35.0
2 parents b7ad69c + 5abaca1 commit 0c2123f

4 files changed

Lines changed: 39 additions & 3 deletions

File tree

.github/workflows/rust-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ permissions:
1414

1515
jobs:
1616
rust-ci:
17-
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
17+
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@7c9db0e5909aab77bf11a444ade3b95c1d2b702e # re-pinned 2026-07-01: toolchain-required-input fix (standards#439)

.machine_readable/6a2/STATE.a2ml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[metadata]
66
project = "panic-attack"
77
version = "2.5.5"
8-
last-updated = "2026-06-02"
8+
last-updated = "2026-06-24"
99
status = "active"
1010

1111
[project-context]
@@ -89,6 +89,16 @@ test-count = "897 passing (cargo test --release; 4 ignored; 901 runnable per --l
8989
truthfulness-fix = "tests/ WeakPoint constructions sed-updated for test_context field (was silently broken on main post-#102)"
9090
blocker = "none"
9191

92+
[session-2026-06-24]
93+
description = "assail detector precision fixes (false-positive reduction) — PR #134"
94+
unchecked-alloc = "UncheckedAllocation (C) now NULL-check aware: per-line scan, skips malloc whose result is guarded (if (p==NULL)/if(!p)/nullptr) within a 7-line window, attaches line number (enables inline // panic-attack: accepted markers). Genuinely-unchecked malloc still fires. New helper c_alloc_result_is_null_checked() in analyzer.rs."
95+
dyn-code-exec = "DynamicCodeExecution (JS/Python) word-boundary aware: \\beval\\s*\\( (and \\b(?:eval|exec)\\s*\\( for Python) so FFI symbols like proven_calculator_eval( are not flagged; genuine eval( still fires."
96+
command-injection = "CommandInjection (Shell) no longer matches --eval/-eval CLI flag: eval builtin matched only in statement position via (?m)(?:^|[\\s;&|(])eval[ \\t]."
97+
conservative = "All three are precision-only (no new false negatives): a site is treated benign only on a clear signal. 4 new tests in tests/analyzer_tests.rs; full analyzer suite 17/17 green; zero warnings."
98+
verified = "End-to-end re-scan: proven 1->0 active Critical/High (stubs.c clears, the genuine fix now registers); paint-type 36->35 (gossamer --eval benchmark FP clears; vendored unsafe FFI + irreducible believe_me axiom correctly remain)."
99+
origin = "Surfaced triaging proven#68 / paint-type#86; refs panic-attack#32."
100+
blocker = "none"
101+
92102
[next-priorities]
93103
hexad-patch-bridge = "Migrate Patch Bridge mitigation registry from JSON to hexad persistence (ROADMAP v2.2.0 / v2.4.0)"
94104
multi-lockfile = "Extend Patch Bridge beyond Cargo.lock to package-lock.json, mix.lock, etc. (ROADMAP v2.4.0)"

.machine_readable/CLADE.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# See: https://github.com/hyperpolymath/gv-clade-index
44

55
[identity]
6-
uuid = "7f831e69-87a5-50b5-a814-a652c38b4df2"
6+
uuid = "e4f11b6b-626c-5dd2-bb83-312c9dc0d968"
77
primary-forge = "github"
88
primary-owner = "hyperpolymath"
99
canonical-name = "panic-attack"

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,32 @@
44

55
## [Unreleased]
66

7+
### Fixed — assail detector precision (false-positive reduction, 2026-06-24)
8+
9+
Three `assail` analyzer fixes, all conservative (no new false negatives), found
10+
while triaging hyperpolymath/proven#68 and JoshuaJewell/paint-type#86:
11+
12+
- **UncheckedAllocation (C) is now NULL-check aware.** The detector previously
13+
flagged *every* `malloc(...)` and emitted a line-less, file-level finding. It
14+
now scans per line, skips a malloc whose result is NULL-checked within a short
15+
window (`if (p == NULL)`, `if (!p)`, `nullptr`), and attaches a line number —
16+
which also lets an inline `// panic-attack: accepted` marker suppress a
17+
reviewed site (marker suppression is line-gated). A genuinely-unchecked malloc
18+
still fires. This is why a real null-check fix (proven `stubs.c`) previously
19+
failed to clear.
20+
- **DynamicCodeExecution (JS/Python) is word-boundary aware.** `contains("eval(")`
21+
matched FFI symbol names like `proven_calculator_eval(`. Now `\beval\s*\(`
22+
(and `\b(?:eval|exec)\s*\(` for Python); a genuine `eval(` still fires.
23+
- **CommandInjection (Shell) no longer matches the `--eval` CLI flag.**
24+
`contains("eval ")` matched `--eval`/`-eval`. Now the eval builtin is matched
25+
only in statement position (`(?m)(?:^|[\s;&|(])eval[ \t]`).
26+
27+
Verified end-to-end: proven 1→0 active Critical/High (`stubs.c` clears),
28+
paint-type 36→35 (gossamer `--eval` benchmark FP clears; genuinely-unsafe
29+
vendored FFI + the irreducible `believe_me` axiom correctly remain). 4 new
30+
tests in `tests/analyzer_tests.rs`; full analyzer suite green; zero warnings.
31+
PR #134. Refs #32.
32+
733
### Added — attestation unforgeability proof (Idris2, PROOF-PROGRAMME §3.2)
834

935
- **`src/abi/AttestationUnforgeability.idr`**: Idris2 proof that the

0 commit comments

Comments
 (0)