Skip to content

Commit 3959768

Browse files
committed
Ruby
1 parent f0b9232 commit 3959768

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

ruby/ql/lib/codeql/ruby/ast/Call.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ private import internal.AST
33
private import internal.Call
44
private import internal.TreeSitter
55
private import codeql.ruby.dataflow.internal.DataFlowDispatch
6-
private import codeql.ruby.dataflow.internal.DataFlowImplCommon
6+
private import codeql.ruby.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
77

88
/**
99
* A call.
@@ -55,7 +55,7 @@ class Call extends Expr instanceof CallImpl {
5555
final Callable getATarget() {
5656
exists(DataFlowCall c |
5757
this = c.asCall().getExpr() and
58-
TCfgScope(result) = viableCallableLambda(c, _)
58+
TCfgScope(result) = DataFlowImplCommon::viableCallableLambda(c, _)
5959
)
6060
or
6161
result = getTarget(TNormalCall(this.getAControlFlowNode()))

ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,27 @@ private import codeql.dataflow.DataFlow
77

88
module Private {
99
import DataFlowPrivate
10-
import DataFlowDispatch
10+
private import DataFlowDispatch as DataFlowDispatch
11+
12+
class DataFlowCall = DataFlowDispatch::DataFlowCall;
13+
14+
class DataFlowCallable = DataFlowDispatch::DataFlowCallable;
15+
16+
predicate viableCallable = DataFlowDispatch::viableCallable/1;
17+
18+
class ReturnKind = DataFlowDispatch::ReturnKind;
19+
20+
class ParameterPosition = DataFlowDispatch::ParameterPosition;
21+
22+
class ArgumentPosition = DataFlowDispatch::ArgumentPosition;
23+
24+
predicate parameterMatch = DataFlowDispatch::parameterMatch/2;
25+
26+
predicate mayBenefitFromCallContext = DataFlowDispatch::mayBenefitFromCallContext/1;
27+
28+
predicate viableImplInCallContext = DataFlowDispatch::viableImplInCallContext/2;
29+
30+
predicate getAnOutNode = DataFlowDispatch::getAnOutNode/2;
1131
}
1232

1333
module Public {

ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ private import codeql.dataflow.internal.FlowSummaryImpl
66
private import codeql.dataflow.internal.AccessPathSyntax as AccessPath
77
private import codeql.ruby.AST
88
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific as DataFlowImplSpecific
9+
private import codeql.ruby.dataflow.internal.DataFlowDispatch
910
private import DataFlowImplSpecific::Private
1011
private import DataFlowImplSpecific::Public
1112

ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,12 +2293,14 @@ edges
22932293
| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1623:10:1623:10 | a [element, element 0] | provenance | |
22942294
| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1626:10:1626:10 | a [element, element 0] | provenance | |
22952295
| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | array_flow.rb:1627:10:1627:10 | a [element, element 0] | provenance | |
2296-
| array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | provenance | |
2296+
| array_flow.rb:1622:5:1622:8 | ...[...] [Reverse] [element 0] | array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | provenance | |
2297+
| array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | array_flow.rb:1622:5:1622:8 | ...[...] [Reverse] [element 0] | provenance | |
22972298
| array_flow.rb:1622:15:1622:27 | call to source | array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | provenance | |
22982299
| array_flow.rb:1623:10:1623:10 | a [element, element 0] | array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | provenance | |
22992300
| array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | array_flow.rb:1623:10:1623:16 | ...[...] | provenance | |
23002301
| array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | provenance | |
2301-
| array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | provenance | |
2302+
| array_flow.rb:1625:5:1625:8 | ...[...] [Reverse] [element 0] | array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | provenance | |
2303+
| array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | array_flow.rb:1625:5:1625:8 | ...[...] [Reverse] [element 0] | provenance | |
23022304
| array_flow.rb:1625:15:1625:27 | call to source | array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | provenance | |
23032305
| array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | provenance | |
23042306
| array_flow.rb:1626:10:1626:10 | a [element, element 0] | array_flow.rb:1626:10:1626:13 | ...[...] [element 0] | provenance | |
@@ -4792,12 +4794,14 @@ nodes
47924794
| array_flow.rb:1617:10:1617:10 | c [element] | semmle.label | c [element] |
47934795
| array_flow.rb:1617:10:1617:13 | ...[...] | semmle.label | ...[...] |
47944796
| array_flow.rb:1622:5:1622:5 | [post] a [element, element 0] | semmle.label | [post] a [element, element 0] |
4797+
| array_flow.rb:1622:5:1622:8 | ...[...] [Reverse] [element 0] | semmle.label | ...[...] [Reverse] [element 0] |
47954798
| array_flow.rb:1622:5:1622:8 | [post] ...[...] [element 0] | semmle.label | [post] ...[...] [element 0] |
47964799
| array_flow.rb:1622:15:1622:27 | call to source | semmle.label | call to source |
47974800
| array_flow.rb:1623:10:1623:10 | a [element, element 0] | semmle.label | a [element, element 0] |
47984801
| array_flow.rb:1623:10:1623:13 | ...[...] [element 0] | semmle.label | ...[...] [element 0] |
47994802
| array_flow.rb:1623:10:1623:16 | ...[...] | semmle.label | ...[...] |
48004803
| array_flow.rb:1625:5:1625:5 | [post] a [element 1, element 0] | semmle.label | [post] a [element 1, element 0] |
4804+
| array_flow.rb:1625:5:1625:8 | ...[...] [Reverse] [element 0] | semmle.label | ...[...] [Reverse] [element 0] |
48014805
| array_flow.rb:1625:5:1625:8 | [post] ...[...] [element 0] | semmle.label | [post] ...[...] [element 0] |
48024806
| array_flow.rb:1625:15:1625:27 | call to source | semmle.label | call to source |
48034807
| array_flow.rb:1626:10:1626:10 | a [element 1, element 0] | semmle.label | a [element 1, element 0] |

0 commit comments

Comments
 (0)