@@ -876,9 +876,9 @@ private module Stage1 implements StageSig {
876
876
877
877
pragma [ nomagic]
878
878
private predicate revFlowOut ( ReturnPosition pos , Configuration config ) {
879
- exists ( DataFlowCall call , NodeEx out |
879
+ exists ( NodeEx out |
880
880
revFlow ( out , _, config ) and
881
- viableReturnPosOutNodeCandFwd1 ( call , pos , out , config )
881
+ viableReturnPosOutNodeCandFwd1 ( _ , pos , out , config )
882
882
)
883
883
}
884
884
@@ -1731,8 +1731,8 @@ private module MkStage<StageSig PrevStage> {
1731
1731
)
1732
1732
or
1733
1733
// 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
1736
1736
flowThroughIntoCall ( call , node , p , _, ap , innerReturnAp , config )
1737
1737
)
1738
1738
or
@@ -1901,8 +1901,8 @@ private module MkStage<StageSig PrevStage> {
1901
1901
1902
1902
pragma [ nomagic]
1903
1903
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
1906
1906
parameterFlowsThroughRev ( p , ap , pos , _, config )
1907
1907
)
1908
1908
}
@@ -1923,8 +1923,8 @@ private module MkStage<StageSig PrevStage> {
1923
1923
DataFlowCall call , ArgNodeEx arg , FlowState state , ReturnCtx returnCtx , ApOption returnAp ,
1924
1924
Ap ap , Configuration config
1925
1925
) {
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
1928
1928
flowThroughIntoCall ( call , arg , p , _, ap , innerReturnAp , config )
1929
1929
)
1930
1930
}
@@ -3749,8 +3749,8 @@ private predicate paramFlowsThrough(
3749
3749
ReturnKindExt kind , FlowState state , CallContextCall cc , SummaryCtxSome sc , AccessPath ap ,
3750
3750
AccessPathApprox apa , Configuration config
3751
3751
) {
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
3754
3754
kind = ret .getKind ( ) and
3755
3755
apa = ap .getApprox ( ) and
3756
3756
parameterFlowThroughAllowed ( sc .getParamNode ( ) , kind )
@@ -4212,37 +4212,33 @@ private module FlowExploration {
4212
4212
ap = TRevPartialNil ( ) and
4213
4213
exists ( config .explorationLimit ( ) )
4214
4214
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 ( )
4226
4224
}
4227
4225
4228
4226
pragma [ nomagic]
4229
4227
private predicate partialPathNodeMk0 (
4230
4228
NodeEx node , FlowState state , CallContext cc , TSummaryCtx1 sc1 , TSummaryCtx2 sc2 ,
4231
4229
TSummaryCtx3 sc3 , PartialAccessPath ap , Configuration config
4232
4230
) {
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 ( )
4246
4242
}
4247
4243
4248
4244
/**
0 commit comments