Skip to content

Commit 017bf68

Browse files
committed
Dataflow: Fix bad join order.
1 parent 4406b8e commit 017bf68

File tree

24 files changed

+288
-144
lines changed

24 files changed

+288
-144
lines changed

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,9 +1029,11 @@ private module Stage2 {
10291029
pragma[nomagic]
10301030
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
10311031
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1032-
fwdFlow(node, cc, argAp, ap, config) and
1032+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1033+
pragma[only_bind_into](config)) and
10331034
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1034-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1035+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1036+
pragma[only_bind_into](config))
10351037
)
10361038
}
10371039

@@ -1708,9 +1710,11 @@ private module Stage3 {
17081710
pragma[nomagic]
17091711
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
17101712
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
1711-
fwdFlow(node, cc, argAp, ap, config) and
1713+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
1714+
pragma[only_bind_into](config)) and
17121715
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
1713-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
1716+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
1717+
pragma[only_bind_into](config))
17141718
)
17151719
}
17161720

@@ -2461,9 +2465,11 @@ private module Stage4 {
24612465
pragma[nomagic]
24622466
private predicate callMayFlowThroughFwd(DataFlowCall call, Configuration config) {
24632467
exists(Ap argAp0, Node node, Cc cc, ApOption argAp, Ap ap |
2464-
fwdFlow(node, cc, argAp, ap, config) and
2468+
fwdFlow(node, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), ap,
2469+
pragma[only_bind_into](config)) and
24652470
fwdFlowOutFromArg(call, node, argAp0, ap, config) and
2466-
fwdFlowIsEntered(call, cc, argAp, argAp0, config)
2471+
fwdFlowIsEntered(call, pragma[only_bind_into](cc), pragma[only_bind_into](argAp), argAp0,
2472+
pragma[only_bind_into](config))
24672473
)
24682474
}
24692475

0 commit comments

Comments
 (0)