Skip to content

Commit d128574

Browse files
committed
Ruby: Implement new data flow interface
1 parent 8e4b7d9 commit d128574

File tree

10 files changed

+19
-13
lines changed

10 files changed

+19
-13
lines changed

ruby/ql/consistency-queries/DataFlowConsistency.ql

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
55
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
66
private import codeql.dataflow.internal.DataFlowImplConsistency
77

8-
private module Input implements InputSig<RubyDataFlow> {
8+
private module Input implements InputSig<Location, RubyDataFlow> {
99
private import RubyDataFlow
1010

1111
predicate postWithInFlowExclude(Node n) { n instanceof FlowSummaryNode }
@@ -46,4 +46,4 @@ private module Input implements InputSig<RubyDataFlow> {
4646
}
4747
}
4848

49-
import MakeConsistency<RubyDataFlow, RubyTaintTracking, Input>
49+
import MakeConsistency<Location, RubyDataFlow, RubyTaintTracking, Input>

ruby/ql/lib/codeql/ruby/DataFlow.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ import codeql.Locations
1212
module DataFlow {
1313
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
1414
private import codeql.dataflow.DataFlow
15-
import DataFlowMake<RubyDataFlow>
15+
import DataFlowMake<Location, RubyDataFlow>
1616
import codeql.ruby.dataflow.internal.DataFlowImpl1
1717
}

ruby/ql/lib/codeql/ruby/TaintTracking.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module TaintTracking {
77
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
88
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
99
private import codeql.dataflow.TaintTracking
10-
import TaintFlowMake<RubyDataFlow, RubyTaintTracking>
10+
private import codeql.Locations
11+
import TaintFlowMake<Location, RubyDataFlow, RubyTaintTracking>
1112
import codeql.ruby.dataflow.internal.tainttracking1.TaintTrackingImpl
1213
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
private import codeql.Locations
12
private import DataFlowImplSpecific
23
private import codeql.dataflow.internal.DataFlowImpl
3-
import MakeImpl<RubyDataFlow>
4+
import MakeImpl<Location, RubyDataFlow>
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
private import codeql.Locations
12
private import DataFlowImplSpecific
23
private import codeql.dataflow.internal.DataFlowImplCommon
3-
import MakeImplCommon<RubyDataFlow>
4+
import MakeImplCommon<Location, RubyDataFlow>

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Provides Ruby-specific definitions for use in the data flow library.
33
*/
44

5+
private import codeql.Locations
56
private import codeql.dataflow.DataFlow
67

78
module Private {
@@ -13,7 +14,7 @@ module Public {
1314
import DataFlowPublic
1415
}
1516

16-
module RubyDataFlow implements InputSig {
17+
module RubyDataFlow implements InputSig<Location> {
1718
import Private
1819
import Public
1920

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Node extends TNode {
3535
* For more information, see
3636
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
3737
*/
38-
predicate hasLocationInfo(
38+
deprecated predicate hasLocationInfo(
3939
string filepath, int startline, int startcolumn, int endline, int endcolumn
4040
) {
4141
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific as DataFlowImp
99
private import DataFlowImplSpecific::Private
1010
private import DataFlowImplSpecific::Public
1111

12-
module Input implements InputSig<DataFlowImplSpecific::RubyDataFlow> {
12+
module Input implements InputSig<Location, DataFlowImplSpecific::RubyDataFlow> {
1313
class SummarizedCallableBase = string;
1414

1515
ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() }
@@ -146,7 +146,7 @@ module Input implements InputSig<DataFlowImplSpecific::RubyDataFlow> {
146146
}
147147
}
148148

149-
private import Make<DataFlowImplSpecific::RubyDataFlow, Input> as Impl
149+
private import Make<Location, DataFlowImplSpecific::RubyDataFlow, Input> as Impl
150150

151151
private module StepsInput implements Impl::Private::StepsInputSig {
152152
DataFlowCall getACall(Public::SummarizedCallable sc) {

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
* Provides Ruby-specific definitions for use in the taint tracking library.
33
*/
44

5+
private import codeql.Locations
56
private import codeql.dataflow.TaintTracking
67
private import DataFlowImplSpecific
78

8-
module RubyTaintTracking implements InputSig<RubyDataFlow> {
9+
module RubyTaintTracking implements InputSig<Location, RubyDataFlow> {
910
import TaintTrackingPrivate
1011
}

ruby/ql/test/TestUtilities/InlineFlowTest.qll

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
*/
55

66
import ruby
7+
private import codeql.Locations
78
private import codeql.dataflow.test.InlineFlowTest
89
private import codeql.ruby.dataflow.internal.DataFlowImplSpecific
910
private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific
1011
private import internal.InlineExpectationsTestImpl
1112

12-
private module FlowTestImpl implements InputSig<RubyDataFlow> {
13+
private module FlowTestImpl implements InputSig<Location, RubyDataFlow> {
1314
import TestUtilities.InlineFlowTestUtil
1415

1516
bindingset[src, sink]
@@ -19,4 +20,4 @@ private module FlowTestImpl implements InputSig<RubyDataFlow> {
1920
}
2021
}
2122

22-
import InlineFlowTestMake<RubyDataFlow, RubyTaintTracking, Impl, FlowTestImpl>
23+
import InlineFlowTestMake<Location, RubyDataFlow, RubyTaintTracking, Impl, FlowTestImpl>

0 commit comments

Comments
 (0)