Skip to content

Commit cd77893

Browse files
committed
C++: Implement new data flow interface
1 parent 3e402d3 commit cd77893

18 files changed

+29
-20
lines changed

cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ import cpp
2828
deprecated module DataFlow {
2929
private import semmle.code.cpp.dataflow.internal.DataFlowImplSpecific
3030
private import codeql.dataflow.DataFlow
31-
import DataFlowMake<CppOldDataFlow>
31+
import DataFlowMake<Location, CppOldDataFlow>
3232
import semmle.code.cpp.dataflow.internal.DataFlowImpl1
3333
}

cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ deprecated module TaintTracking {
2929
private import semmle.code.cpp.dataflow.internal.DataFlowImplSpecific
3030
private import semmle.code.cpp.dataflow.internal.TaintTrackingImplSpecific
3131
private import codeql.dataflow.TaintTracking
32-
import TaintFlowMake<CppOldDataFlow, CppOldTaintTracking>
32+
import TaintFlowMake<Location, CppOldDataFlow, CppOldTaintTracking>
3333
import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTrackingImpl
3434
}

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* DEPRECATED: Use `semmle.code.cpp.dataflow.new.DataFlow` instead.
33
*/
44

5+
private import semmle.code.cpp.Location
56
private import DataFlowImplSpecific
67
private import codeql.dataflow.internal.DataFlowImpl
7-
import MakeImpl<CppOldDataFlow>
8+
import MakeImpl<Location, CppOldDataFlow>

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* DEPRECATED: Use `semmle.code.cpp.dataflow.new.DataFlow` instead.
33
*/
44

5+
private import semmle.code.cpp.Location
56
private import DataFlowImplSpecific
67
private import codeql.dataflow.internal.DataFlowImplCommon
7-
import MakeImplCommon<CppOldDataFlow>
8+
import MakeImplCommon<Location, CppOldDataFlow>

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private import DataFlowImplSpecific
1010
private import TaintTrackingImplSpecific
1111
private import codeql.dataflow.internal.DataFlowImplConsistency
1212

13-
private module Input implements InputSig<CppOldDataFlow> {
13+
private module Input implements InputSig<Location, CppOldDataFlow> {
1414
predicate argHasPostUpdateExclude(Private::ArgumentNode n) {
1515
// Is the null pointer (or something that's not really a pointer)
1616
exists(n.asExpr().getValue())
@@ -26,4 +26,4 @@ private module Input implements InputSig<CppOldDataFlow> {
2626
}
2727
}
2828

29-
module Consistency = MakeConsistency<CppOldDataFlow, CppOldTaintTracking, Input>;
29+
module Consistency = MakeConsistency<Location, CppOldDataFlow, CppOldTaintTracking, Input>;

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplSpecific.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Provides C++-specific definitions for use in the data flow library.
55
*/
66

7+
private import semmle.code.cpp.Location
78
private import codeql.dataflow.DataFlow
89

910
module Private {
@@ -15,7 +16,7 @@ module Public {
1516
import DataFlowUtil
1617
}
1718

18-
module CppOldDataFlow implements InputSig {
19+
module CppOldDataFlow implements InputSig<Location> {
1920
import Private
2021
import Public
2122

cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class Node extends TNode {
105105
* For more information, see
106106
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
107107
*/
108-
predicate hasLocationInfo(
108+
deprecated predicate hasLocationInfo(
109109
string filepath, int startline, int startcolumn, int endline, int endcolumn
110110
) {
111111
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)

cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
* Provides C++-specific definitions for use in the taint tracking library.
55
*/
66

7+
private import semmle.code.cpp.Location
78
private import codeql.dataflow.TaintTracking
89
private import DataFlowImplSpecific
910

10-
module CppOldTaintTracking implements InputSig<CppOldDataFlow> {
11+
module CppOldTaintTracking implements InputSig<Location, CppOldDataFlow> {
1112
import TaintTrackingUtil
1213
}

cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ import cpp
2828
module DataFlow {
2929
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
3030
private import codeql.dataflow.DataFlow
31-
import DataFlowMake<CppDataFlow>
31+
import DataFlowMake<Location, CppDataFlow>
3232
import semmle.code.cpp.ir.dataflow.internal.DataFlowImpl1
3333
}

cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module TaintTracking {
2727
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
2828
private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific
2929
private import codeql.dataflow.TaintTracking
30-
import TaintFlowMake<CppDataFlow, CppTaintTracking>
30+
private import semmle.code.cpp.Location
31+
import TaintFlowMake<Location, CppDataFlow, CppTaintTracking>
3132
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl
3233
}

cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ import cpp
2424
module DataFlow {
2525
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
2626
private import codeql.dataflow.DataFlow
27-
import DataFlowMake<CppDataFlow>
27+
import DataFlowMake<Location, CppDataFlow>
2828
import semmle.code.cpp.ir.dataflow.internal.DataFlowImpl1
2929
}

cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ module TaintTracking {
2323
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
2424
private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific
2525
private import codeql.dataflow.TaintTracking
26-
import TaintFlowMake<CppDataFlow, CppTaintTracking>
26+
import TaintFlowMake<Location, CppDataFlow, CppTaintTracking>
2727
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl
2828
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
private import semmle.code.cpp.Location
12
private import DataFlowImplSpecific
23
private import codeql.dataflow.internal.DataFlowImpl
3-
import MakeImpl<CppDataFlow>
4+
import MakeImpl<Location, CppDataFlow>
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
private import semmle.code.cpp.Location
12
private import DataFlowImplSpecific
23
private import codeql.dataflow.internal.DataFlowImplCommon
3-
import MakeImplCommon<CppDataFlow>
4+
import MakeImplCommon<Location, CppDataFlow>

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ private import DataFlowImplSpecific
88
private import TaintTrackingImplSpecific
99
private import codeql.dataflow.internal.DataFlowImplConsistency
1010

11-
private module Input implements InputSig<CppDataFlow> {
11+
private module Input implements InputSig<Location, CppDataFlow> {
1212
predicate argHasPostUpdateExclude(Private::ArgumentNode n) {
1313
// The rules for whether an IR argument gets a post-update node are too
1414
// complex to model here.
1515
any()
1616
}
1717
}
1818

19-
module Consistency = MakeConsistency<CppDataFlow, CppTaintTracking, Input>;
19+
module Consistency = MakeConsistency<Location, CppDataFlow, CppTaintTracking, Input>;

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
private import codeql.dataflow.DataFlow
6+
private import semmle.code.cpp.Location
67

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

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

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ class Node extends TIRDataFlowNode {
448448
* For more information, see
449449
* [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
450450
*/
451-
predicate hasLocationInfo(
451+
deprecated predicate hasLocationInfo(
452452
string filepath, int startline, int startcolumn, int endline, int endcolumn
453453
) {
454454
this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
private import codeql.dataflow.TaintTracking
66
private import DataFlowImplSpecific
7+
private import semmle.code.cpp.Location
78

8-
module CppTaintTracking implements InputSig<CppDataFlow> {
9+
module CppTaintTracking implements InputSig<Location, CppDataFlow> {
910
import TaintTrackingUtil
1011
}

0 commit comments

Comments
 (0)