Skip to content

Commit abe3a81

Browse files
authored
Merge pull request github#13851 from MathiasVP/sink-without-states
DataFlow: Support stateless `isSink` in `StateConfigSig`s
2 parents 97c6888 + e066e87 commit abe3a81

File tree

43 files changed

+126
-14
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+126
-14
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> imp
2424
Config::allowImplicitRead(node, c)
2525
or
2626
(
27+
Config::isSink(node) or
2728
Config::isSink(node, _) or
2829
Config::isAdditionalFlowStep(node, _) or
2930
Config::isAdditionalFlowStep(node, _, _, _)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ private module Config implements FullStateConfigSig {
276276
getConfig(state).isSource(source) and getState(state) instanceof FlowStateEmpty
277277
}
278278

279+
predicate isSink(Node sink) { none() }
280+
279281
predicate isSink(Node sink, FlowState state) {
280282
getConfig(state).isSink(sink, getState(state))
281283
or

0 commit comments

Comments
 (0)