Skip to content

Commit 1b0e9d5

Browse files
committed
Dataflow: Fix join order in nodeMayUseSummary.
1 parent 3c47159 commit 1b0e9d5

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3394,17 +3394,27 @@ private Configuration unbindConf(Configuration conf) {
33943394
exists(Configuration c | result = pragma[only_bind_into](c) and conf = pragma[only_bind_into](c))
33953395
}
33963396

3397-
private predicate nodeMayUseSummary(
3398-
NodeEx n, FlowState state, AccessPathApprox apa, Configuration config
3397+
pragma[nomagic]
3398+
private predicate nodeMayUseSummary0(
3399+
NodeEx n, DataFlowCallable c, FlowState state, AccessPathApprox apa, Configuration config
33993400
) {
3400-
exists(DataFlowCallable c, AccessPathApprox apa0 |
3401-
Stage4::parameterMayFlowThrough(_, c, apa, _) and
3401+
exists(AccessPathApprox apa0 |
3402+
Stage4::parameterMayFlowThrough(_, c, _, _) and
34023403
Stage4::revFlow(n, state, true, _, apa0, config) and
34033404
Stage4::fwdFlow(n, state, any(CallContextCall ccc), TAccessPathApproxSome(apa), apa0, config) and
34043405
n.getEnclosingCallable() = c
34053406
)
34063407
}
34073408

3409+
private predicate nodeMayUseSummary(
3410+
NodeEx n, FlowState state, AccessPathApprox apa, Configuration config
3411+
) {
3412+
exists(DataFlowCallable c |
3413+
Stage4::parameterMayFlowThrough(_, c, apa, _) and
3414+
nodeMayUseSummary0(n, c, state, apa, config)
3415+
)
3416+
}
3417+
34083418
private newtype TSummaryCtx =
34093419
TSummaryCtxNone() or
34103420
TSummaryCtxSome(ParamNodeEx p, FlowState state, AccessPath ap) {

0 commit comments

Comments
 (0)