mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-20 05:29:28 +00:00
spec(access-control-prover): a guard whose passing branch alone holds the operation discharges it (effect branches)
Raised by the implementing agent: the design named only exits on the failing arm; if (can(x)) { op(); } is the
common shape and the operation is unreachable from the failing arm there too.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
2f628b921b
commit
6c3d4a7d72
@@ -217,8 +217,8 @@ without it, so that a check in a branch the attacker can avoid, or one whose res
|
||||
guard's statement (dominators over the graph); the trace shall record each guard's relation to the operation
|
||||
as `all_paths`, `some_paths`, `none` or `after`.
|
||||
3. The trace shall record each guard's failure effect: `throws`, `returns`, `exits` (break, continue, exit call),
|
||||
or `value_only` when the guard's result is not consumed by a branch or an exit before the operation; a
|
||||
`value_only` guard shall not discharge.
|
||||
`branches` (the operation lies only inside the guard's passing branch), or `value_only` when the guard's
|
||||
result is not consumed by a branch or an exit before the operation; a `value_only` guard shall not discharge.
|
||||
4. The trace shall record the operation's control context: the branch conditions it sits under in order (the
|
||||
guard's own condition when it is one), whether it is inside a loop, inside a try whose catch swallows the
|
||||
guard's exception type, or on an exception path.
|
||||
|
||||
Reference in New Issue
Block a user