Skip to content

Commit bdd64ce

Browse files
committed
Introduce shared taint tracking library
1 parent abe3a81 commit bdd64ce

File tree

12 files changed

+143
-157
lines changed

12 files changed

+143
-157
lines changed

config/identical-files.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
"swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll"
3535
],
3636
"TaintTracking Java/C++/C#/Go/Python/Ruby/Swift": [
37-
"cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTracking.qll",
38-
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTracking.qll",
3937
"csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTracking.qll",
4038
"go/ql/lib/semmle/go/dataflow/internal/tainttracking1/TaintTracking.qll",
4139
"java/ql/lib/semmle/code/java/dataflow/internal/tainttracking1/TaintTracking.qll",

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ import semmle.code.cpp.dataflow.DataFlow2
2525
* global (inter-procedural) taint-tracking analyses.
2626
*/
2727
deprecated module TaintTracking {
28-
import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTracking
28+
import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTrackingParameter::Public
29+
private import semmle.code.cpp.dataflow.internal.DataFlowImplSpecific
30+
private import semmle.code.cpp.dataflow.internal.TaintTrackingImplSpecific
31+
private import codeql.dataflow.TaintTracking
32+
import TaintFlowMake<CppOldDataFlow, CppOldTaintTracking>
2933
import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTrackingImpl
3034
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Provides C++-specific definitions for use in the taint tracking library.
3+
*/
4+
5+
private import codeql.dataflow.TaintTrackingParameter
6+
private import DataFlowImplSpecific
7+
8+
module CppOldTaintTracking implements TaintTrackingParameter<CppOldDataFlow> {
9+
import TaintTrackingUtil
10+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ predicate defaultAdditionalTaintStep(DataFlow::Node src, DataFlow::Node sink) {
3939
* of `c` at sinks and inputs to additional taint steps.
4040
*/
4141
bindingset[node]
42-
predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::Content c) { none() }
42+
predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::ContentSet c) { none() }
4343

4444
/**
4545
* Holds if `node` should be a sanitizer in all global taint flow configurations

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

Lines changed: 0 additions & 75 deletions
This file was deleted.

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ import semmle.code.cpp.dataflow.new.DataFlow2
2323
* global (inter-procedural) taint-tracking analyses.
2424
*/
2525
module TaintTracking {
26-
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTracking
26+
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingParameter::Public
27+
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
28+
private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific
29+
private import codeql.dataflow.TaintTracking
30+
import TaintFlowMake<CppDataFlow, CppTaintTracking>
2731
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl
2832
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ import semmle.code.cpp.ir.dataflow.DataFlow
1919
import semmle.code.cpp.ir.dataflow.DataFlow2
2020

2121
module TaintTracking {
22-
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTracking
22+
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingParameter::Public
23+
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific
24+
private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific
25+
private import codeql.dataflow.TaintTracking
26+
import TaintFlowMake<CppDataFlow, CppTaintTracking>
2327
import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl
2428
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Provides C++-specific definitions for use in the taint tracking library.
3+
*/
4+
5+
private import codeql.dataflow.TaintTrackingParameter
6+
private import DataFlowImplSpecific
7+
8+
module CppTaintTracking implements TaintTrackingParameter<CppDataFlow> {
9+
import TaintTrackingUtil
10+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ predicate defaultAdditionalTaintStep(DataFlow::Node src, DataFlow::Node sink) {
112112
* of `c` at sinks and inputs to additional taint steps.
113113
*/
114114
bindingset[node]
115-
predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::Content c) { none() }
115+
predicate defaultImplicitTaintRead(DataFlow::Node node, DataFlow::ContentSet c) { none() }
116116

117117
/**
118118
* Holds if `node` should be a sanitizer in all global taint flow configurations

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

Lines changed: 0 additions & 75 deletions
This file was deleted.

0 commit comments

Comments
 (0)