@@ -1390,7 +1390,16 @@ private module MkStage<StageSig PrevStage> {
13901390 )
13911391 or
13921392 // flow out of a callable
1393- fwdFlowOutNotFromArg ( node , state , cc , summaryCtx , argAp , ap , config )
1393+ exists (
1394+ DataFlowCall call , RetNodeEx ret , boolean allowsFieldFlow , CcNoCall innercc ,
1395+ DataFlowCallable inner
1396+ |
1397+ fwdFlow ( ret , state , innercc , summaryCtx , argAp , ap , config ) and
1398+ flowOutOfCall ( call , ret , _, node , allowsFieldFlow , config ) and
1399+ inner = ret .getEnclosingCallable ( ) and
1400+ cc = getCallContextReturn ( inner , call , innercc ) and
1401+ if allowsFieldFlow = false then ap instanceof ApNil else any ( )
1402+ )
13941403 or
13951404 // flow through a callable
13961405 exists ( DataFlowCall call , ParameterPosition summaryCtx0 , Ap argAp0 |
@@ -1447,23 +1456,6 @@ private module MkStage<StageSig PrevStage> {
14471456 )
14481457 }
14491458
1450- pragma [ nomagic]
1451- private predicate fwdFlowOutNotFromArg (
1452- NodeEx out , FlowState state , Cc ccOut , ParameterPositionOption summaryCtx , ApOption argAp ,
1453- Ap ap , Configuration config
1454- ) {
1455- exists (
1456- DataFlowCall call , RetNodeEx ret , boolean allowsFieldFlow , CcNoCall innercc ,
1457- DataFlowCallable inner
1458- |
1459- fwdFlow ( ret , state , innercc , summaryCtx , argAp , ap , config ) and
1460- flowOutOfCall ( call , ret , _, out , allowsFieldFlow , config ) and
1461- inner = ret .getEnclosingCallable ( ) and
1462- ccOut = getCallContextReturn ( inner , call , innercc ) and
1463- if allowsFieldFlow = false then ap instanceof ApNil else any ( )
1464- )
1465- }
1466-
14671459 pragma [ nomagic]
14681460 private predicate fwdFlowOutFromArg (
14691461 DataFlowCall call , NodeEx out , FlowState state , ParameterPosition summaryCtx , Ap argAp , Ap ap ,
0 commit comments