@@ -876,9 +876,9 @@ private module Stage1 implements StageSig {
876876
877877 pragma [ nomagic]
878878 private predicate revFlowOut ( ReturnPosition pos , Configuration config ) {
879- exists ( DataFlowCall call , NodeEx out |
879+ exists ( NodeEx out |
880880 revFlow ( out , _, config ) and
881- viableReturnPosOutNodeCandFwd1 ( call , pos , out , config )
881+ viableReturnPosOutNodeCandFwd1 ( _ , pos , out , config )
882882 )
883883 }
884884
@@ -1731,8 +1731,8 @@ private module MkStage<StageSig PrevStage> {
17311731 )
17321732 or
17331733 // flow through a callable
1734- exists ( DataFlowCall call , ParamNodeEx p , ReturnPosition pos , Ap innerReturnAp |
1735- revFlowThrough ( call , returnCtx , p , state , pos , returnAp , ap , innerReturnAp , config ) and
1734+ exists ( DataFlowCall call , ParamNodeEx p , Ap innerReturnAp |
1735+ revFlowThrough ( call , returnCtx , p , state , _ , returnAp , ap , innerReturnAp , config ) and
17361736 flowThroughIntoCall ( call , node , p , _, ap , innerReturnAp , config )
17371737 )
17381738 or
@@ -1901,8 +1901,8 @@ private module MkStage<StageSig PrevStage> {
19011901
19021902 pragma [ nomagic]
19031903 predicate parameterMayFlowThrough ( ParamNodeEx p , Ap ap , Configuration config ) {
1904- exists ( RetNodeEx ret , ReturnPosition pos |
1905- returnFlowsThrough ( ret , pos , _, _, p , ap , _, config ) and
1904+ exists ( ReturnPosition pos |
1905+ returnFlowsThrough ( _ , pos , _, _, p , ap , _, config ) and
19061906 parameterFlowsThroughRev ( p , ap , pos , _, config )
19071907 )
19081908 }
@@ -1923,8 +1923,8 @@ private module MkStage<StageSig PrevStage> {
19231923 DataFlowCall call , ArgNodeEx arg , FlowState state , ReturnCtx returnCtx , ApOption returnAp ,
19241924 Ap ap , Configuration config
19251925 ) {
1926- exists ( ParamNodeEx p , ReturnPosition pos , Ap innerReturnAp |
1927- revFlowThrough ( call , returnCtx , p , state , pos , returnAp , ap , innerReturnAp , config ) and
1926+ exists ( ParamNodeEx p , Ap innerReturnAp |
1927+ revFlowThrough ( call , returnCtx , p , state , _ , returnAp , ap , innerReturnAp , config ) and
19281928 flowThroughIntoCall ( call , arg , p , _, ap , innerReturnAp , config )
19291929 )
19301930 }
@@ -3749,8 +3749,8 @@ private predicate paramFlowsThrough(
37493749 ReturnKindExt kind , FlowState state , CallContextCall cc , SummaryCtxSome sc , AccessPath ap ,
37503750 AccessPathApprox apa , Configuration config
37513751) {
3752- exists ( PathNodeMid mid , RetNodeEx ret |
3753- pathNode ( mid , ret , state , cc , sc , ap , config , _) and
3752+ exists ( RetNodeEx ret |
3753+ pathNode ( _ , ret , state , cc , sc , ap , config , _) and
37543754 kind = ret .getKind ( ) and
37553755 apa = ap .getApprox ( ) and
37563756 parameterFlowThroughAllowed ( sc .getParamNode ( ) , kind )
@@ -4212,37 +4212,33 @@ private module FlowExploration {
42124212 ap = TRevPartialNil ( ) and
42134213 exists ( config .explorationLimit ( ) )
42144214 or
4215- exists ( PartialPathNodeRev mid |
4216- revPartialPathStep ( mid , node , state , sc1 , sc2 , sc3 , ap , config ) and
4217- not clearsContentEx ( node , ap .getHead ( ) ) and
4218- (
4219- notExpectsContent ( node ) or
4220- expectsContentEx ( node , ap .getHead ( ) )
4221- ) and
4222- not fullBarrier ( node , config ) and
4223- not stateBarrier ( node , state , config ) and
4224- distSink ( node .getEnclosingCallable ( ) , config ) <= config .explorationLimit ( )
4225- )
4215+ revPartialPathStep ( _, node , state , sc1 , sc2 , sc3 , ap , config ) and
4216+ not clearsContentEx ( node , ap .getHead ( ) ) and
4217+ (
4218+ notExpectsContent ( node ) or
4219+ expectsContentEx ( node , ap .getHead ( ) )
4220+ ) and
4221+ not fullBarrier ( node , config ) and
4222+ not stateBarrier ( node , state , config ) and
4223+ distSink ( node .getEnclosingCallable ( ) , config ) <= config .explorationLimit ( )
42264224 }
42274225
42284226 pragma [ nomagic]
42294227 private predicate partialPathNodeMk0 (
42304228 NodeEx node , FlowState state , CallContext cc , TSummaryCtx1 sc1 , TSummaryCtx2 sc2 ,
42314229 TSummaryCtx3 sc3 , PartialAccessPath ap , Configuration config
42324230 ) {
4233- exists ( PartialPathNodeFwd mid |
4234- partialPathStep ( mid , node , state , cc , sc1 , sc2 , sc3 , ap , config ) and
4235- not fullBarrier ( node , config ) and
4236- not stateBarrier ( node , state , config ) and
4237- not clearsContentEx ( node , ap .getHead ( ) .getContent ( ) ) and
4238- (
4239- notExpectsContent ( node ) or
4240- expectsContentEx ( node , ap .getHead ( ) .getContent ( ) )
4241- ) and
4242- if node .asNode ( ) instanceof CastingNode
4243- then compatibleTypes ( node .getDataFlowType ( ) , ap .getType ( ) )
4244- else any ( )
4245- )
4231+ partialPathStep ( _, node , state , cc , sc1 , sc2 , sc3 , ap , config ) and
4232+ not fullBarrier ( node , config ) and
4233+ not stateBarrier ( node , state , config ) and
4234+ not clearsContentEx ( node , ap .getHead ( ) .getContent ( ) ) and
4235+ (
4236+ notExpectsContent ( node ) or
4237+ expectsContentEx ( node , ap .getHead ( ) .getContent ( ) )
4238+ ) and
4239+ if node .asNode ( ) instanceof CastingNode
4240+ then compatibleTypes ( node .getDataFlowType ( ) , ap .getType ( ) )
4241+ else any ( )
42464242 }
42474243
42484244 /**
0 commit comments