Skip to content

Commit f374034

Browse files
committed
support or-guards
1 parent 6ff59e5 commit f374034

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

  • ruby/ql/lib/codeql/ruby/controlflow/internal

ruby/ql/lib/codeql/ruby/controlflow/internal/Guards.qll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ predicate guardControlsBlock(CfgNodes::AstCfgNode guard, BasicBlock bb, boolean
1212
conditionBlock.edgeDominates(bb, s)
1313
)
1414
or
15-
exists(BasicBlock whenBlock, ConditionalSuccessor s, ControlFlowNode guardNode, int i |
16-
guardNode.isAfter(guard.(CfgNodes::ExprNodes::WhenClauseCfgNode).getAstNode()) and
17-
whenBlock.getNode(i) = guardNode and
18-
i != 0 and
19-
guardNode = any(ControlFlowNode n).getASuccessor(s) and
15+
exists(ConditionalSuccessor s, ControlFlowNode guardNode |
16+
guardNode.isAfter(guard.getAstNode()) and
17+
forall(ControlFlowNode pred | pred = guardNode.getAPredecessor() |
18+
pred.getASuccessor(s) = guardNode
19+
) and
2020
s.getValue() = branch and
21-
whenBlock.dominates(bb)
21+
guardNode.getBasicBlock().dominates(bb)
2222
)
2323
}

0 commit comments

Comments
 (0)