@@ -1440,13 +1440,12 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1440
1440
1441
1441
pragma [ nomagic]
1442
1442
private predicate flowThroughOutOfCall (
1443
- DataFlowCall call , CcCall ccc , RetNodeEx ret , NodeEx out , boolean allowsFieldFlow
1443
+ DataFlowCall call , RetNodeEx ret , NodeEx out , boolean allowsFieldFlow
1444
1444
) {
1445
1445
exists ( ReturnKindExt kind |
1446
1446
PrevStage:: callEdgeReturn ( call , _, ret , kind , out , allowsFieldFlow ) and
1447
1447
PrevStage:: callMayFlowThroughRev ( call ) and
1448
- PrevStage:: returnMayFlowThrough ( ret , kind ) and
1449
- matchesCall ( ccc , call )
1448
+ PrevStage:: returnMayFlowThrough ( ret , kind )
1450
1449
)
1451
1450
}
1452
1451
@@ -1568,9 +1567,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1568
1567
apa = getApprox ( ap )
1569
1568
or
1570
1569
// flow through a callable
1571
- exists ( DataFlowCall call , CcCall ccc , RetNodeEx ret , boolean allowsFieldFlow |
1572
- fwdFlowThrough ( call , cc , state , ccc , summaryCtx , t , ap , stored , ret ) and
1573
- flowThroughOutOfCall ( call , ccc , ret , node , allowsFieldFlow ) and
1570
+ exists ( DataFlowCall call , RetNodeEx ret , boolean allowsFieldFlow |
1571
+ fwdFlowThrough ( call , cc , state , summaryCtx , t , ap , stored , ret ) and
1572
+ flowThroughOutOfCall ( call , ret , node , allowsFieldFlow ) and
1574
1573
apa = getApprox ( ap ) and
1575
1574
not inBarrier ( node , state ) and
1576
1575
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
@@ -2098,10 +2097,10 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2098
2097
2099
2098
pragma [ nomagic]
2100
2099
private predicate fwdFlowThrough (
2101
- DataFlowCall call , Cc cc , FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t ,
2102
- Ap ap , TypOption stored , RetNodeEx ret
2100
+ DataFlowCall call , Cc cc , FlowState state , SummaryCtx summaryCtx , Typ t , Ap ap ,
2101
+ TypOption stored , RetNodeEx ret
2103
2102
) {
2104
- fwdFlowThrough0 ( call , _, cc , state , ccc , summaryCtx , t , ap , stored , ret , _)
2103
+ fwdFlowThrough0 ( call , _, cc , state , _ , summaryCtx , t , ap , stored , ret , _)
2105
2104
}
2106
2105
2107
2106
pragma [ nomagic]
@@ -2156,7 +2155,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2156
2155
exists ( DataFlowCall call , boolean allowsFieldFlow |
2157
2156
returnFlowsThrough0 ( call , state , ccc , ap , ret ,
2158
2157
TSummaryCtxSome ( p , _, argT , argAp , argStored ) ) and
2159
- flowThroughOutOfCall ( call , ccc , ret , _, allowsFieldFlow ) and
2158
+ flowThroughOutOfCall ( call , ret , _, allowsFieldFlow ) and
2160
2159
pos = ret .getReturnPosition ( ) and
2161
2160
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
2162
2161
)
@@ -3155,12 +3154,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3155
3154
pragma [ nomagic]
3156
3155
private predicate fwdFlowThroughStep1 (
3157
3156
PathNodeImpl pn1 , PathNodeImpl pn2 , PathNodeImpl pn3 , DataFlowCall call , Cc cc ,
3158
- FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored ,
3159
- RetNodeEx ret
3157
+ FlowState state , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored , RetNodeEx ret
3160
3158
) {
3161
3159
exists (
3162
3160
FlowState state0 , ArgNodeEx arg , SummaryCtxSome innerSummaryCtx , ParamNodeEx p ,
3163
- Typ innerArgT , Ap innerArgAp , TypOption innerArgStored
3161
+ Typ innerArgT , Ap innerArgAp , TypOption innerArgStored , CcCall ccc
3164
3162
|
3165
3163
fwdFlowThroughStep0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , stored , ret ,
3166
3164
innerSummaryCtx ) and
@@ -3178,10 +3176,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3178
3176
PathNodeImpl pn1 , PathNodeImpl pn2 , PathNodeImpl pn3 , NodeEx node , Cc cc ,
3179
3177
FlowState state , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored
3180
3178
) {
3181
- exists ( DataFlowCall call , CcCall ccc , RetNodeEx ret , boolean allowsFieldFlow |
3182
- fwdFlowThroughStep1 ( pn1 , pn2 , pn3 , call , cc , state , ccc , summaryCtx , t , ap , stored ,
3183
- ret ) and
3184
- flowThroughOutOfCall ( call , ccc , ret , node , allowsFieldFlow ) and
3179
+ exists ( DataFlowCall call , RetNodeEx ret , boolean allowsFieldFlow |
3180
+ fwdFlowThroughStep1 ( pn1 , pn2 , pn3 , call , cc , state , summaryCtx , t , ap , stored , ret ) and
3181
+ flowThroughOutOfCall ( call , ret , node , allowsFieldFlow ) and
3185
3182
not inBarrier ( node , state ) and
3186
3183
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
3187
3184
)
0 commit comments