@@ -1557,7 +1557,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1557
1557
summaryCtx = TSummaryCtxSome ( node , state , t , ap , stored )
1558
1558
or
1559
1559
// 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 )
1561
1562
or
1562
1563
// flow through a callable
1563
1564
exists ( DataFlowCall call , CcCall ccc , RetNodeEx ret , boolean allowsFieldFlow |
@@ -1939,19 +1940,19 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1939
1940
pragma [ nomagic]
1940
1941
private predicate fwdFlowIntoRet (
1941
1942
RetNodeEx ret , FlowState state , CcNoCall cc , SummaryCtx summaryCtx , Typ t , Ap ap ,
1942
- ApApprox apa , TypOption stored
1943
+ TypOption stored
1943
1944
) {
1944
1945
instanceofCcNoCall ( cc ) and
1945
1946
not outBarrier ( ret , state ) and
1946
- fwdFlow ( ret , state , cc , summaryCtx , t , ap , apa , stored )
1947
+ fwdFlow ( ret , state , cc , summaryCtx , t , ap , _ , stored )
1947
1948
}
1948
1949
1949
1950
pragma [ nomagic]
1950
1951
private predicate fwdFlowOutCand (
1951
1952
DataFlowCall call , RetNodeEx ret , CcNoCall innercc , DataFlowCallable inner , NodeEx out ,
1952
- ApApprox apa , boolean allowsFieldFlow
1953
+ boolean allowsFieldFlow
1953
1954
) {
1954
- fwdFlowIntoRet ( ret , _, innercc , _, _, _, apa , _) and
1955
+ fwdFlowIntoRet ( ret , _, innercc , _, _, _, _) and
1955
1956
inner = ret .getEnclosingCallable ( ) and
1956
1957
(
1957
1958
call = viableImplCallContextReducedReverseInlineLate ( inner , innercc ) and
@@ -1964,21 +1965,21 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1964
1965
pragma [ nomagic]
1965
1966
private predicate fwdFlowOutValidEdge (
1966
1967
DataFlowCall call , RetNodeEx ret , CcNoCall innercc , DataFlowCallable inner , NodeEx out ,
1967
- CcNoCall outercc , ApApprox apa , boolean allowsFieldFlow
1968
+ CcNoCall outercc , boolean allowsFieldFlow
1968
1969
) {
1969
- fwdFlowOutCand ( call , ret , innercc , inner , out , apa , allowsFieldFlow ) and
1970
+ fwdFlowOutCand ( call , ret , innercc , inner , out , allowsFieldFlow ) and
1970
1971
FwdTypeFlow:: typeFlowValidEdgeOut ( call , inner ) and
1971
1972
outercc = getCallContextReturn ( inner , call )
1972
1973
}
1973
1974
1974
1975
pragma [ inline]
1975
1976
private predicate fwdFlowOut (
1976
1977
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
1978
1979
) {
1979
1980
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
1982
1983
not inBarrier ( out , state ) and
1983
1984
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
1984
1985
)
@@ -2022,7 +2023,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2022
2023
DataFlowCall call , DataFlowCallable c , NodeEx node , FlowState state , Cc cc , Typ t ,
2023
2024
Ap ap , TypOption stored
2024
2025
) {
2025
- fwdFlowOut ( call , c , node , state , cc , _, t , ap , _ , stored )
2026
+ fwdFlowOut ( call , c , node , state , cc , _, t , ap , stored )
2026
2027
}
2027
2028
2028
2029
pragma [ nomagic]
@@ -3299,10 +3300,10 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3299
3300
)
3300
3301
or
3301
3302
// flow out of a callable
3302
- exists ( RetNodeEx ret , CcNoCall innercc , boolean allowsFieldFlow , ApApprox apa |
3303
+ exists ( RetNodeEx ret , CcNoCall innercc , boolean allowsFieldFlow |
3303
3304
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
3306
3307
not inBarrier ( node , state ) and
3307
3308
label = "" and
3308
3309
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
0 commit comments