Skip to content

Commit 9110dfa

Browse files
authored
Merge pull request github#6095 from hvitved/dataflow/local-cc-join
Data flow: Fix `getLocalCallContext` join-order
2 parents bbb5a39 + eb86bce commit 9110dfa

File tree

24 files changed

+144
-48
lines changed

24 files changed

+144
-48
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,9 @@ private module Stage4 {
22202220
bindingset[node, cc, config]
22212221
private LocalCc getLocalCc(Node node, Cc cc, Configuration config) {
22222222
localFlowEntry(node, config) and
2223-
result = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(node))
2223+
result =
2224+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
2225+
getNodeEnclosingCallable(node))
22242226
}
22252227

22262228
private predicate localStep(
@@ -3255,7 +3257,9 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
32553257
conf = mid.getConfiguration() and
32563258
cc = mid.getCallContext() and
32573259
sc = mid.getSummaryCtx() and
3258-
localCC = getLocalCallContext(pragma[only_bind_out](cc), getNodeEnclosingCallable(midnode)) and
3260+
localCC =
3261+
getLocalCallContext(pragma[only_bind_into](pragma[only_bind_out](cc)),
3262+
getNodeEnclosingCallable(midnode)) and
32593263
ap0 = mid.getAp()
32603264
|
32613265
localFlowBigStep(midnode, node, true, _, conf, localCC) and

0 commit comments

Comments
 (0)