Commit Graph
5 Commits
Author SHA1 Message Date
Thomas Vincent 1aba203d3e fix(security): reject ambiguous shell expansion contexts
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-14 18:40:10 -07:00
Thomas Vincent cbd748eb43 test: retain native security fixture evidence in changed coverage
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-14 16:06:34 -07:00
Thomas Vincent 3c9678007a fix(security): reject unsupported nested shell grammar in #8237 (#8359)
* fix(security): reject unsupported nested shell grammar

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* test(security): exercise nested grammar rejection in CI coverage

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-14 00:57:53 -07:00
TheWitness eb4ca6b53e fix(security): clear quote-empty flag on single-quote content; cover new parser branches
The stack-based substitute_script_path() rewrite left quoteEmpty set while emitting literal content inside a single-quoted region, so a template like '\<field>' wrongly took the exact-wrap branch and dropped the backslash (ScriptSubstitutionMatrix 'shell 56'). Clear the frame's quoteEmpty whenever a single-quoted character is emitted, matching the pre-rewrite fallthrough.

ScriptSubstitutionMatrix.php: add 8 explicit parser cases exercising the \/backtick nested contexts and escaped \$ / backtick pairing so every rewritten line is covered by the changed-coverage probe (1285 -> 1293).
2026-10-12 08:38:10 -04:00
Thomas Vincent 0d04c74660 test(security): cover changed guards and gate PR coverage
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-12 09:07:55 +00:00