@@ -2069,8 +2069,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2069
2069
2070
2070
pragma [ nomagic]
2071
2071
private predicate fwdFlowRetFromArg (
2072
- RetNodeEx ret , FlowState state , CcCall ccc , SummaryCtxSome summaryCtx , ApApprox argApa ,
2073
- Typ t , Ap ap , ApApprox apa , TypOption stored
2072
+ RetNodeEx ret , FlowState state , CcCall ccc , SummaryCtxSome summaryCtx , Typ t , Ap ap ,
2073
+ ApApprox apa , TypOption stored
2074
2074
) {
2075
2075
exists ( ReturnKindExt kind , ParamNodeEx p , Ap argAp |
2076
2076
instanceofCcCall ( ccc ) and
@@ -2080,7 +2080,6 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2080
2080
not outBarrier ( ret , state ) and
2081
2081
kind = ret .getKind ( ) and
2082
2082
parameterFlowThroughAllowed ( p , kind ) and
2083
- argApa = getApprox ( argAp ) and
2084
2083
PrevStage:: returnMayFlowThrough ( ret , kind )
2085
2084
)
2086
2085
}
@@ -2089,9 +2088,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2089
2088
private predicate fwdFlowThrough0 (
2090
2089
DataFlowCall call , ArgNodeEx arg , Cc cc , FlowState state , CcCall ccc ,
2091
2090
SummaryCtx summaryCtx , Typ t , Ap ap , ApApprox apa , TypOption stored , RetNodeEx ret ,
2092
- SummaryCtxSome innerSummaryCtx , ApApprox innerArgApa
2091
+ SummaryCtxSome innerSummaryCtx
2093
2092
) {
2094
- fwdFlowRetFromArg ( ret , state , ccc , innerSummaryCtx , innerArgApa , t , ap , apa , stored ) and
2093
+ fwdFlowRetFromArg ( ret , state , ccc , innerSummaryCtx , t , ap , apa , stored ) and
2095
2094
fwdFlowIsEntered ( call , arg , cc , ccc , summaryCtx , innerSummaryCtx )
2096
2095
}
2097
2096
@@ -2100,7 +2099,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2100
2099
DataFlowCall call , Cc cc , FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t ,
2101
2100
Ap ap , ApApprox apa , TypOption stored , RetNodeEx ret
2102
2101
) {
2103
- fwdFlowThrough0 ( call , _, cc , state , ccc , summaryCtx , t , ap , apa , stored , ret , _, _ )
2102
+ fwdFlowThrough0 ( call , _, cc , state , ccc , summaryCtx , t , ap , apa , stored , ret , _)
2104
2103
}
2105
2104
2106
2105
pragma [ nomagic]
@@ -2141,21 +2140,20 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2141
2140
2142
2141
pragma [ nomagic]
2143
2142
private predicate returnFlowsThrough0 (
2144
- DataFlowCall call , FlowState state , CcCall ccc , Ap ap , ApApprox apa , RetNodeEx ret ,
2145
- SummaryCtxSome innerSummaryCtx , ApApprox innerArgApa
2143
+ DataFlowCall call , FlowState state , CcCall ccc , Ap ap , RetNodeEx ret ,
2144
+ SummaryCtxSome innerSummaryCtx
2146
2145
) {
2147
- fwdFlowThrough0 ( call , _, _, state , ccc , _, _, ap , apa , _, ret , innerSummaryCtx ,
2148
- innerArgApa )
2146
+ fwdFlowThrough0 ( call , _, _, state , ccc , _, _, ap , _, _, ret , innerSummaryCtx )
2149
2147
}
2150
2148
2151
2149
pragma [ nomagic]
2152
2150
private predicate returnFlowsThrough (
2153
2151
RetNodeEx ret , ReturnPosition pos , FlowState state , CcCall ccc , ParamNodeEx p , Typ argT ,
2154
- Ap argAp , ApApprox argApa , TypOption argStored , Ap ap
2152
+ Ap argAp , TypOption argStored , Ap ap
2155
2153
) {
2156
2154
exists ( DataFlowCall call , boolean allowsFieldFlow |
2157
- returnFlowsThrough0 ( call , state , ccc , ap , _ , ret ,
2158
- TSummaryCtxSome ( p , _, argT , argAp , argStored ) , argApa ) and
2155
+ returnFlowsThrough0 ( call , state , ccc , ap , ret ,
2156
+ TSummaryCtxSome ( p , _, argT , argAp , argStored ) ) and
2159
2157
flowThroughOutOfCall ( call , ccc , ret , _, allowsFieldFlow ) and
2160
2158
pos = ret .getReturnPosition ( ) and
2161
2159
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
@@ -2168,7 +2166,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2168
2166
) {
2169
2167
exists ( Typ argT , TypOption argStored , boolean emptyArgAp |
2170
2168
returnFlowsThrough ( _, _, _, _, pragma [ only_bind_into ] ( p ) , pragma [ only_bind_into ] ( argT ) ,
2171
- pragma [ only_bind_into ] ( argAp ) , _ , pragma [ only_bind_into ] ( argStored ) , ap ) and
2169
+ pragma [ only_bind_into ] ( argAp ) , pragma [ only_bind_into ] ( argStored ) , ap ) and
2172
2170
flowIntoCallApaTaken ( call , _, pragma [ only_bind_into ] ( arg ) , p , emptyArgAp ) and
2173
2171
fwdFlow ( arg , _, _, _, pragma [ only_bind_into ] ( argT ) , pragma [ only_bind_into ] ( argAp ) , _,
2174
2172
pragma [ only_bind_into ] ( argStored ) ) and
@@ -2274,7 +2272,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2274
2272
// flow out of a callable
2275
2273
exists ( ReturnPosition pos |
2276
2274
revFlowOut ( _, node , pos , state , _, _, _, ap ) and
2277
- if returnFlowsThrough ( node , pos , state , _, _, _, _, _, _ , ap )
2275
+ if returnFlowsThrough ( node , pos , state , _, _, _, _, _, ap )
2278
2276
then (
2279
2277
returnCtx = TReturnCtxMaybeFlowThrough ( pos ) and
2280
2278
returnAp = apSome ( ap )
@@ -2439,7 +2437,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2439
2437
) {
2440
2438
exists ( RetNodeEx ret , FlowState state , CcCall ccc |
2441
2439
revFlowOut ( call , ret , pos , state , returnCtx , _, returnAp , ap ) and
2442
- returnFlowsThrough ( ret , pos , state , ccc , _, _, _, _, _ , ap ) and
2440
+ returnFlowsThrough ( ret , pos , state , ccc , _, _, _, _, ap ) and
2443
2441
matchesCall ( ccc , call )
2444
2442
)
2445
2443
}
@@ -2508,7 +2506,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2508
2506
pragma [ nomagic]
2509
2507
private predicate parameterMayFlowThroughAp ( ParamNodeEx p , Ap ap ) {
2510
2508
exists ( ReturnPosition pos |
2511
- returnFlowsThrough ( _, pos , _, _, p , _, ap , _, _, _ ) and
2509
+ returnFlowsThrough ( _, pos , _, _, p , _, ap , _, _) and
2512
2510
parameterFlowsThroughRev ( p , ap , pos , _)
2513
2511
)
2514
2512
}
@@ -2545,7 +2543,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2545
2543
pragma [ nomagic]
2546
2544
predicate returnMayFlowThrough ( RetNodeEx ret , ReturnKindExt kind ) {
2547
2545
exists ( ParamNodeEx p , ReturnPosition pos , Ap argAp , Ap ap |
2548
- returnFlowsThrough ( ret , pos , _, _, p , _, argAp , _, _ , ap ) and
2546
+ returnFlowsThrough ( ret , pos , _, _, p , _, argAp , _, ap ) and
2549
2547
parameterFlowsThroughRev ( p , argAp , pos , ap ) and
2550
2548
kind = pos .getKind ( )
2551
2549
)
@@ -3133,11 +3131,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3133
3131
pragma [ nomagic]
3134
3132
private predicate fwdFlowThroughStep0 (
3135
3133
DataFlowCall call , ArgNodeEx arg , Cc cc , FlowState state , CcCall ccc ,
3136
- SummaryCtx summaryCtx , Typ t , Ap ap , ApApprox apa , TypOption stored , RetNodeEx ret ,
3134
+ SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored , RetNodeEx ret ,
3137
3135
SummaryCtxSome innerSummaryCtx
3138
3136
) {
3139
- fwdFlowThrough0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , apa , stored , ret ,
3140
- innerSummaryCtx , _ )
3137
+ fwdFlowThrough0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , _ , stored , ret ,
3138
+ innerSummaryCtx )
3141
3139
}
3142
3140
3143
3141
bindingset [ node, state, cc, summaryCtx, t, ap, stored]
@@ -3162,14 +3160,14 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3162
3160
pragma [ nomagic]
3163
3161
private predicate fwdFlowThroughStep1 (
3164
3162
PathNodeImpl pn1 , PathNodeImpl pn2 , PathNodeImpl pn3 , DataFlowCall call , Cc cc ,
3165
- FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t , Ap ap , ApApprox apa ,
3166
- TypOption stored , RetNodeEx ret
3163
+ FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored ,
3164
+ RetNodeEx ret
3167
3165
) {
3168
3166
exists (
3169
3167
FlowState state0 , ArgNodeEx arg , SummaryCtxSome innerSummaryCtx , ParamNodeEx p ,
3170
3168
Typ innerArgT , Ap innerArgAp , TypOption innerArgStored
3171
3169
|
3172
- fwdFlowThroughStep0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , apa , stored , ret ,
3170
+ fwdFlowThroughStep0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , stored , ret ,
3173
3171
innerSummaryCtx ) and
3174
3172
innerSummaryCtx = TSummaryCtxSome ( p , state0 , innerArgT , innerArgAp , innerArgStored ) and
3175
3173
pn1 = mkPathNode ( arg , state0 , cc , summaryCtx , innerArgT , innerArgAp , innerArgStored ) and
@@ -3186,7 +3184,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3186
3184
FlowState state , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored
3187
3185
) {
3188
3186
exists ( DataFlowCall call , CcCall ccc , RetNodeEx ret , boolean allowsFieldFlow |
3189
- fwdFlowThroughStep1 ( pn1 , pn2 , pn3 , call , cc , state , ccc , summaryCtx , t , ap , _ , stored ,
3187
+ fwdFlowThroughStep1 ( pn1 , pn2 , pn3 , call , cc , state , ccc , summaryCtx , t , ap , stored ,
3190
3188
ret ) and
3191
3189
flowThroughOutOfCall ( call , ccc , ret , node , allowsFieldFlow ) and
3192
3190
not inBarrier ( node , state ) and
0 commit comments