Skip to content

Commit 194fe85

Browse files
committed
Ruby: Use asCallable() to generate epsilon edges
1 parent 452fbe7 commit 194fe85

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

ruby/ql/lib/codeql/ruby/ApiGraphs.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,12 @@ module API {
978978
pred = Impl::MkModuleInstanceUp(mod) and
979979
succ = getBackwardEndNode(mod.getOwnInstanceMethod("call"))
980980
)
981+
or
982+
// Step through callable wrappers like `proc` and `lambda` calls.
983+
exists(DataFlow::Node node |
984+
pred = getBackwardEndNode(node) and
985+
succ = getBackwardStartNode(node.asCallable())
986+
)
981987
}
982988

983989
pragma[nomagic]
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
failures
22
testFailures
3-
| explicit-proc.rb:2:7:2:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |
4-
| explicit-proc.rb:6:7:6:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |
53
| explicit-proc.rb:10:7:10:78 | # $ reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] | Missing result:reachableFromSource=Member[Foo].Method[bar].Argument[0].Parameter[0] |

0 commit comments

Comments
 (0)