@@ -1904,11 +1904,11 @@ module MakeImpl<InputSig Lang> {
1904
1904
pragma [ nomagic]
1905
1905
private predicate returnFlowsThrough (
1906
1906
RetNodeEx ret , ReturnPosition pos , FlowState state , CcCall ccc , ParamNodeEx p , Typ argT ,
1907
- Ap argAp , Ap ap
1907
+ Ap argAp , ApApprox argApa , Ap ap
1908
1908
) {
1909
- exists ( DataFlowCall call , ApApprox apa , boolean allowsFieldFlow , ApApprox innerArgApa |
1910
- returnFlowsThrough0 ( call , state , ccc , ap , apa , ret , p , argT , argAp , innerArgApa ) and
1911
- flowThroughOutOfCall ( call , ccc , ret , _, allowsFieldFlow , innerArgApa , apa ) and
1909
+ exists ( DataFlowCall call , ApApprox apa , boolean allowsFieldFlow |
1910
+ returnFlowsThrough0 ( call , state , ccc , ap , apa , ret , p , argT , argAp , argApa ) and
1911
+ flowThroughOutOfCall ( call , ccc , ret , _, allowsFieldFlow , argApa , apa ) and
1912
1912
pos = ret .getReturnPosition ( ) and
1913
1913
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
1914
1914
)
@@ -1920,10 +1920,10 @@ module MakeImpl<InputSig Lang> {
1920
1920
) {
1921
1921
exists ( ApApprox argApa , Typ argT |
1922
1922
returnFlowsThrough ( _, _, _, _, pragma [ only_bind_into ] ( p ) , pragma [ only_bind_into ] ( argT ) ,
1923
- pragma [ only_bind_into ] ( argAp ) , ap ) and
1923
+ pragma [ only_bind_into ] ( argAp ) , pragma [ only_bind_into ] ( argApa ) , ap ) and
1924
1924
flowIntoCallApaTaken ( call , _, pragma [ only_bind_into ] ( arg ) , p , allowsFieldFlow , argApa ) and
1925
1925
fwdFlow ( arg , _, _, _, _, _, pragma [ only_bind_into ] ( argT ) , pragma [ only_bind_into ] ( argAp ) ,
1926
- argApa ) and
1926
+ pragma [ only_bind_into ] ( argApa ) ) and
1927
1927
if allowsFieldFlow = false then argAp instanceof ApNil else any ( )
1928
1928
)
1929
1929
}
@@ -2027,7 +2027,7 @@ module MakeImpl<InputSig Lang> {
2027
2027
// flow out of a callable
2028
2028
exists ( ReturnPosition pos |
2029
2029
revFlowOut ( _, node , pos , state , _, _, _, ap ) and
2030
- if returnFlowsThrough ( node , pos , state , _, _, _, _, ap )
2030
+ if returnFlowsThrough ( node , pos , state , _, _, _, _, _ , ap )
2031
2031
then (
2032
2032
returnCtx = TReturnCtxMaybeFlowThrough ( pos ) and
2033
2033
returnAp = apSome ( ap )
@@ -2189,7 +2189,7 @@ module MakeImpl<InputSig Lang> {
2189
2189
) {
2190
2190
exists ( RetNodeEx ret , FlowState state , CcCall ccc |
2191
2191
revFlowOut ( call , ret , pos , state , returnCtx , _, returnAp , ap ) and
2192
- returnFlowsThrough ( ret , pos , state , ccc , _, _, _, ap ) and
2192
+ returnFlowsThrough ( ret , pos , state , ccc , _, _, _, _ , ap ) and
2193
2193
matchesCall ( ccc , call )
2194
2194
)
2195
2195
}
@@ -2258,15 +2258,15 @@ module MakeImpl<InputSig Lang> {
2258
2258
pragma [ nomagic]
2259
2259
predicate parameterMayFlowThrough ( ParamNodeEx p , Ap ap ) {
2260
2260
exists ( ReturnPosition pos |
2261
- returnFlowsThrough ( _, pos , _, _, p , _, ap , _) and
2261
+ returnFlowsThrough ( _, pos , _, _, p , _, ap , _, _ ) and
2262
2262
parameterFlowsThroughRev ( p , ap , pos , _)
2263
2263
)
2264
2264
}
2265
2265
2266
2266
pragma [ nomagic]
2267
2267
predicate returnMayFlowThrough ( RetNodeEx ret , Ap argAp , Ap ap , ReturnKindExt kind ) {
2268
2268
exists ( ParamNodeEx p , ReturnPosition pos |
2269
- returnFlowsThrough ( ret , pos , _, _, p , _, argAp , ap ) and
2269
+ returnFlowsThrough ( ret , pos , _, _, p , _, argAp , _ , ap ) and
2270
2270
parameterFlowsThroughRev ( p , argAp , pos , ap ) and
2271
2271
kind = pos .getKind ( )
2272
2272
)
@@ -3986,8 +3986,8 @@ module MakeImpl<InputSig Lang> {
3986
3986
AccessPath ap
3987
3987
) {
3988
3988
exists ( DataFlowType t0 |
3989
- pathStep0 ( mid , node , state , cc , sc , t0 , ap ) and
3990
- Stage5:: revFlow ( node , state , ap .getApprox ( ) ) and
3989
+ pathStep0 ( mid , pragma [ only_bind_into ] ( node ) , pragma [ only_bind_into ] ( state ) , cc , sc , t0 , ap ) and
3990
+ Stage5:: revFlow ( pragma [ only_bind_into ] ( node ) , pragma [ only_bind_into ] ( state ) , ap .getApprox ( ) ) and
3991
3991
strengthenType ( node , t0 , t ) and
3992
3992
not inBarrier ( node , state )
3993
3993
)
0 commit comments