@@ -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