Skip to content

Commit 28d0d65

Browse files
authored
Merge pull request #18515 from aschackmull/dataflow/simplify-rev-throughflow
Dataflow: Simplify the call-edge join in reverse through-flow.
2 parents d7df8d7 + f310780 commit 28d0d65

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll

+14-12
Original file line numberDiff line numberDiff line change
@@ -2186,11 +2186,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
21862186

21872187
pragma[nomagic]
21882188
private predicate flowThroughIntoCall(
2189-
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, Ap argAp, Ap ap
2189+
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, Ap argAp
21902190
) {
21912191
exists(Typ argT, TypOption argStored |
21922192
returnFlowsThrough(_, _, _, _, pragma[only_bind_into](p), pragma[only_bind_into](argT),
2193-
pragma[only_bind_into](argAp), pragma[only_bind_into](argStored), ap) and
2193+
pragma[only_bind_into](argAp), pragma[only_bind_into](argStored), _) and
21942194
flowIntoCallTaken(call, _, pragma[only_bind_into](arg), p, isNil(argAp)) and
21952195
fwdFlow(arg, _, _, _, pragma[only_bind_into](argT), pragma[only_bind_into](argAp),
21962196
pragma[only_bind_into](argStored))
@@ -2284,9 +2284,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
22842284
returnAp = apNone()
22852285
or
22862286
// flow through a callable
2287-
exists(DataFlowCall call, ParamNodeEx p, Ap innerReturnAp |
2288-
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp) and
2289-
flowThroughIntoCall(call, node, p, ap, innerReturnAp)
2287+
exists(DataFlowCall call, ParamNodeEx p |
2288+
revFlowThrough(call, returnCtx, p, state, returnAp, ap) and
2289+
flowThroughIntoCall(call, node, p, ap)
22902290
)
22912291
or
22922292
// flow out of a callable
@@ -2436,11 +2436,13 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
24362436

24372437
pragma[nomagic]
24382438
private predicate revFlowThrough(
2439-
DataFlowCall call, ReturnCtx returnCtx, ParamNodeEx p, FlowState state,
2440-
ReturnPosition pos, ApOption returnAp, Ap ap, Ap innerReturnAp
2439+
DataFlowCall call, ReturnCtx returnCtx, ParamNodeEx p, FlowState state, ApOption returnAp,
2440+
Ap ap
24412441
) {
2442-
revFlowParamToReturn(p, state, pos, innerReturnAp, ap) and
2443-
revFlowIsReturned(call, returnCtx, returnAp, pos, innerReturnAp)
2442+
exists(ReturnPosition pos, Ap innerReturnAp |
2443+
revFlowParamToReturn(p, state, pos, innerReturnAp, ap) and
2444+
revFlowIsReturned(call, returnCtx, returnAp, pos, innerReturnAp)
2445+
)
24442446
}
24452447

24462448
/**
@@ -2566,9 +2568,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
25662568
DataFlowCall call, ArgNodeEx arg, FlowState state, ReturnCtx returnCtx, ApOption returnAp,
25672569
Ap ap
25682570
) {
2569-
exists(ParamNodeEx p, Ap innerReturnAp |
2570-
revFlowThrough(call, returnCtx, p, state, _, returnAp, ap, innerReturnAp) and
2571-
flowThroughIntoCall(call, arg, p, ap, innerReturnAp)
2571+
exists(ParamNodeEx p |
2572+
revFlowThrough(call, returnCtx, p, state, returnAp, ap) and
2573+
flowThroughIntoCall(call, arg, p, ap)
25722574
)
25732575
}
25742576

0 commit comments

Comments
 (0)