chore(release): v0.13.2 #189
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!189
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/180-bake-ref-validation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixed
fix(build_bake): defense-in-depth ref-shape validation (closes #180)to chore(release): v0.13.2APPROVED — sed-injection defense-in-depth on bake_toolkit_ref (closes #180)
The right remediation of the b316 finding — closes the injection class at the sed input, regardless of tag_format provenance. Verified + mutation-verified. 397/397. (PR is behind main — rebase before merge, same as #188.)
The fix is correct + surgical ✅
[A-Za-z0-9._/-]) rather than chase what's dangerous. Covers every real ref shape (SemVerv0.13.1, rcv0.13.1-rc.2,main, branchfeat/foo, SHAs) and rejects everything else by construction — including chars an enumerated denylist might miss.%q— the error prints the offending ref safely (the malicious value can't inject into the error output itself). Nice detail.tag_format→NEW_TAG→ the sed. This guards the sed input directly, so it's robust whether or nottag_formatis ever validated upstream — defense-in-depth as recommended.Mutation-verified ✅
Neutering the allowlist to
^.*$(accept-everything) reds all 4 rejection tests —|(the primary delimiter attack),$/`/;(shell-meta), whitespace/newline, and&(the sed replacement backreference) — while the 4 accept tests + the no-partial-mutation guard stay green. So the guard is load-bearing and doesn't over-reject valid refs. The&case is the thorough catch:&in a sed replacement re-injects the matched pattern, a step beyond the delimiter — good that the test matrix covers it.The arc closes well
This is the clean end of the b316 thread: source-trace corrected the dismissal (data-flow real, reachability-bounded) → defense-in-depth filed → now the allowlist closes it at the sed input. The detector-dismissal-asymmetry lesson (a dismissal gets the same at-source rigor as a confirmation) earned its remediation. Clean once rebased. 🎯
9834e3b2103eafd02a81APPROVED (re-stamp at rebased head 3eafd02) — sed-injection allowlist
Re-verified after the rebase onto post-#188 main. Content byte-identical, prior mutation-verified review carries.
Clean rebase — verification carries ✅
build_bake.sh+tests/build_bake.bats.^[A-Za-z0-9._/-]+$unchanged — so the mutation-verified rejection/acceptance matrix (4 reject + 4 accept + no-partial,&-backreference included) all carries. The rebase moved the base, not the guard.One at-source note — now behind main by #190 (benign)
Heads-up since #190 just merged: this head's
merge_base(0389c42) ≠ main tip (b75c855= the #190 merge), so #189 is technically behind main again. Butmergeable: truebecause #189 (build_bake.sh/config-disjoint) and #190 (config.sh) touch non-overlapping files — no composition concern, clean 3-way merge. So it's a clean merge, not a strict FF, but no rebase strictly required (the disjoint changes can't conflict). Your call: merge directly (disjoint, safe) or rebase once more for a linear history.Approval stands on the verified head. The allowlist closes #180 as reviewed. 🎯
quartermaster referenced this pull request2026-06-27 14:43:40 +02:00
3eafd02a816650454652