Skip to content

Commit a0b1c2e

Browse files
committed
DataFlow: Add uniqueParameterNodePositionExclude
1 parent 2b0a5fd commit a0b1c2e

File tree

8 files changed

+48
-0
lines changed

8 files changed

+48
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplConsistency.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ module Consistency {
5050
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
5151
none()
5252
}
53+
54+
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
55+
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
56+
none()
57+
}
5358
}
5459

5560
private class RelevantNode extends Node {
@@ -260,6 +265,7 @@ module Consistency {
260265
query predicate uniqueParameterNodePosition(
261266
DataFlowCallable c, ParameterPosition pos, Node p, string msg
262267
) {
268+
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
263269
isParameterNode(p, c, pos) and
264270
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
265271
msg = "Parameter node with multiple positions."

0 commit comments

Comments
 (0)