Skip to content

Commit d404406

Browse files
committed
Dataflow: Remove ApApprox column in out-flow.
1 parent 7c888eb commit d404406

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,7 +1557,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
15571557
summaryCtx = TSummaryCtxSome(node, state, t, ap, stored)
15581558
or
15591559
// flow out of a callable
1560-
fwdFlowOut(_, _, node, state, cc, summaryCtx, t, ap, apa, stored)
1560+
fwdFlowOut(_, _, node, state, cc, summaryCtx, t, ap, stored) and
1561+
apa = getApprox(ap)
15611562
or
15621563
// flow through a callable
15631564
exists(DataFlowCall call, CcCall ccc, RetNodeEx ret, boolean allowsFieldFlow |
@@ -1939,19 +1940,19 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
19391940
pragma[nomagic]
19401941
private predicate fwdFlowIntoRet(
19411942
RetNodeEx ret, FlowState state, CcNoCall cc, SummaryCtx summaryCtx, Typ t, Ap ap,
1942-
ApApprox apa, TypOption stored
1943+
TypOption stored
19431944
) {
19441945
instanceofCcNoCall(cc) and
19451946
not outBarrier(ret, state) and
1946-
fwdFlow(ret, state, cc, summaryCtx, t, ap, apa, stored)
1947+
fwdFlow(ret, state, cc, summaryCtx, t, ap, _, stored)
19471948
}
19481949

19491950
pragma[nomagic]
19501951
private predicate fwdFlowOutCand(
19511952
DataFlowCall call, RetNodeEx ret, CcNoCall innercc, DataFlowCallable inner, NodeEx out,
1952-
ApApprox apa, boolean allowsFieldFlow
1953+
boolean allowsFieldFlow
19531954
) {
1954-
fwdFlowIntoRet(ret, _, innercc, _, _, _, apa, _) and
1955+
fwdFlowIntoRet(ret, _, innercc, _, _, _, _) and
19551956
inner = ret.getEnclosingCallable() and
19561957
(
19571958
call = viableImplCallContextReducedReverseInlineLate(inner, innercc) and
@@ -1964,21 +1965,21 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
19641965
pragma[nomagic]
19651966
private predicate fwdFlowOutValidEdge(
19661967
DataFlowCall call, RetNodeEx ret, CcNoCall innercc, DataFlowCallable inner, NodeEx out,
1967-
CcNoCall outercc, ApApprox apa, boolean allowsFieldFlow
1968+
CcNoCall outercc, boolean allowsFieldFlow
19681969
) {
1969-
fwdFlowOutCand(call, ret, innercc, inner, out, apa, allowsFieldFlow) and
1970+
fwdFlowOutCand(call, ret, innercc, inner, out, allowsFieldFlow) and
19701971
FwdTypeFlow::typeFlowValidEdgeOut(call, inner) and
19711972
outercc = getCallContextReturn(inner, call)
19721973
}
19731974

19741975
pragma[inline]
19751976
private predicate fwdFlowOut(
19761977
DataFlowCall call, DataFlowCallable inner, NodeEx out, FlowState state, CcNoCall outercc,
1977-
SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, TypOption stored
1978+
SummaryCtx summaryCtx, Typ t, Ap ap, TypOption stored
19781979
) {
19791980
exists(RetNodeEx ret, CcNoCall innercc, boolean allowsFieldFlow |
1980-
fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, apa, stored) and
1981-
fwdFlowOutValidEdge(call, ret, innercc, inner, out, outercc, apa, allowsFieldFlow) and
1981+
fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, stored) and
1982+
fwdFlowOutValidEdge(call, ret, innercc, inner, out, outercc, allowsFieldFlow) and
19821983
not inBarrier(out, state) and
19831984
if allowsFieldFlow = false then ap instanceof ApNil else any()
19841985
)
@@ -2022,7 +2023,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
20222023
DataFlowCall call, DataFlowCallable c, NodeEx node, FlowState state, Cc cc, Typ t,
20232024
Ap ap, TypOption stored
20242025
) {
2025-
fwdFlowOut(call, c, node, state, cc, _, t, ap, _, stored)
2026+
fwdFlowOut(call, c, node, state, cc, _, t, ap, stored)
20262027
}
20272028

20282029
pragma[nomagic]
@@ -3299,10 +3300,10 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
32993300
)
33003301
or
33013302
// flow out of a callable
3302-
exists(RetNodeEx ret, CcNoCall innercc, boolean allowsFieldFlow, ApApprox apa |
3303+
exists(RetNodeEx ret, CcNoCall innercc, boolean allowsFieldFlow |
33033304
pn1 = TPathNodeMid(ret, state, innercc, summaryCtx, t, ap, stored) and
3304-
fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, apa, stored) and
3305-
fwdFlowOutValidEdge(_, ret, innercc, _, node, cc, apa, allowsFieldFlow) and
3305+
fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, stored) and
3306+
fwdFlowOutValidEdge(_, ret, innercc, _, node, cc, allowsFieldFlow) and
33063307
not inBarrier(node, state) and
33073308
label = "" and
33083309
if allowsFieldFlow = false then ap instanceof ApNil else any()

0 commit comments

Comments
 (0)