@@ -1776,22 +1776,20 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1776
1776
1777
1777
pragma [ inline]
1778
1778
predicate fwdFlowIn (
1779
- DataFlowCall call , DataFlowCallable inner , ParamNodeEx p , FlowState state , Cc outercc ,
1780
- CcCall innercc , ParamNodeOption summaryCtx , TypOption argT , ApOption argAp , Typ t ,
1781
- Ap ap , ApApprox apa , boolean cc , boolean allowsFlowThrough
1779
+ DataFlowCall call , ArgNodeEx arg , DataFlowCallable inner , ParamNodeEx p ,
1780
+ FlowState state , Cc outercc , CcCall innercc , ParamNodeOption summaryCtx , TypOption argT ,
1781
+ ApOption argAp , Typ t , Ap ap , ApApprox apa , boolean cc , boolean allowsFlowThrough
1782
1782
) {
1783
- exists ( ArgNodeEx arg |
1784
- // type flow disabled: linear recursion
1785
- fwdFlowInCandTypeFlowDisabled ( call , arg , state , outercc , inner , p , summaryCtx , argT ,
1786
- argAp , t , ap , apa , cc , allowsFlowThrough ) and
1787
- fwdFlowInValidEdgeTypeFlowDisabled ( call , inner , innercc , pragma [ only_bind_into ] ( cc ) )
1788
- or
1789
- // type flow enabled: non-linear recursion
1790
- exists ( boolean emptyAp |
1791
- fwdFlowIntoArg ( arg , state , outercc , summaryCtx , argT , argAp , t , ap , emptyAp , apa , cc ) and
1792
- fwdFlowInValidEdgeTypeFlowEnabled ( call , arg , outercc , inner , p , innercc , emptyAp ,
1793
- apa , cc , allowsFlowThrough )
1794
- )
1783
+ // type flow disabled: linear recursion
1784
+ fwdFlowInCandTypeFlowDisabled ( call , arg , state , outercc , inner , p , summaryCtx , argT ,
1785
+ argAp , t , ap , apa , cc , allowsFlowThrough ) and
1786
+ fwdFlowInValidEdgeTypeFlowDisabled ( call , inner , innercc , pragma [ only_bind_into ] ( cc ) )
1787
+ or
1788
+ // type flow enabled: non-linear recursion
1789
+ exists ( boolean emptyAp |
1790
+ fwdFlowIntoArg ( arg , state , outercc , summaryCtx , argT , argAp , t , ap , emptyAp , apa , cc ) and
1791
+ fwdFlowInValidEdgeTypeFlowEnabled ( call , arg , outercc , inner , p , innercc , emptyAp , apa ,
1792
+ cc , allowsFlowThrough )
1795
1793
)
1796
1794
}
1797
1795
}
@@ -1804,8 +1802,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1804
1802
boolean allowsFlowThrough
1805
1803
) {
1806
1804
exists ( boolean allowsFlowThrough0 |
1807
- FwdFlowIn< FwdFlowInNoRestriction > :: fwdFlowIn ( _, _, p , state , _, innercc , _, _, _, t , ap ,
1808
- apa , _, allowsFlowThrough0 ) and
1805
+ FwdFlowIn< FwdFlowInNoRestriction > :: fwdFlowIn ( _, _, _ , p , state , _, innercc , _, _, _, t ,
1806
+ ap , apa , _, allowsFlowThrough0 ) and
1809
1807
if PrevStage:: parameterMayFlowThrough ( p , apa )
1810
1808
then allowsFlowThrough = allowsFlowThrough0
1811
1809
else allowsFlowThrough = false
@@ -1907,8 +1905,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1907
1905
DataFlowCall call , DataFlowCallable c , ParamNodeEx p , FlowState state , CcCall innercc ,
1908
1906
Typ t , Ap ap , boolean cc
1909
1907
) {
1910
- FwdFlowIn< FwdFlowInNoRestriction > :: fwdFlowIn ( call , c , p , state , _, innercc , _, _, _, t ,
1911
- ap , _, cc , _)
1908
+ FwdFlowIn< FwdFlowInNoRestriction > :: fwdFlowIn ( call , _ , c , p , state , _, innercc , _, _, _,
1909
+ t , ap , _, cc , _)
1912
1910
}
1913
1911
1914
1912
pragma [ nomagic]
@@ -1993,13 +1991,14 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1993
1991
1994
1992
pragma [ inline]
1995
1993
private predicate fwdFlowThrough0 (
1996
- DataFlowCall call , Cc cc , FlowState state , CcCall ccc , ParamNodeOption summaryCtx ,
1997
- TypOption argT , ApOption argAp , Typ t , Ap ap , ApApprox apa , RetNodeEx ret ,
1998
- ParamNodeEx innerSummaryCtx , Typ innerArgT , Ap innerArgAp , ApApprox innerArgApa
1994
+ DataFlowCall call , ArgNodeEx arg , Cc cc , FlowState state , CcCall ccc ,
1995
+ ParamNodeOption summaryCtx , TypOption argT , ApOption argAp , Typ t , Ap ap , ApApprox apa ,
1996
+ RetNodeEx ret , ParamNodeEx innerSummaryCtx , Typ innerArgT , Ap innerArgAp ,
1997
+ ApApprox innerArgApa
1999
1998
) {
2000
1999
fwdFlowRetFromArg ( ret , state , ccc , innerSummaryCtx , innerArgT , innerArgAp , innerArgApa , t ,
2001
2000
ap , apa ) and
2002
- fwdFlowIsEntered ( call , cc , ccc , summaryCtx , argT , argAp , innerSummaryCtx , innerArgT ,
2001
+ fwdFlowIsEntered ( call , arg , cc , ccc , summaryCtx , argT , argAp , innerSummaryCtx , innerArgT ,
2003
2002
innerArgAp )
2004
2003
}
2005
2004
@@ -2009,8 +2008,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2009
2008
TypOption argT , ApOption argAp , Typ t , Ap ap , ApApprox apa , RetNodeEx ret ,
2010
2009
ApApprox innerArgApa
2011
2010
) {
2012
- fwdFlowThrough0 ( call , cc , state , ccc , summaryCtx , argT , argAp , t , ap , apa , ret , _ , _, _,
2013
- innerArgApa )
2011
+ fwdFlowThrough0 ( call , _ , cc , state , ccc , summaryCtx , argT , argAp , t , ap , apa , ret , _, _,
2012
+ _ , innerArgApa )
2014
2013
}
2015
2014
2016
2015
private module FwdFlowThroughRestriction implements FwdFlowInInputSig {
@@ -2025,11 +2024,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2025
2024
*/
2026
2025
pragma [ nomagic]
2027
2026
private predicate fwdFlowIsEntered (
2028
- DataFlowCall call , Cc cc , CcCall innerCc , ParamNodeOption summaryCtx , TypOption argT ,
2029
- ApOption argAp , ParamNodeEx p , Typ t , Ap ap
2027
+ DataFlowCall call , ArgNodeEx arg , Cc cc , CcCall innerCc , ParamNodeOption summaryCtx ,
2028
+ TypOption argT , ApOption argAp , ParamNodeEx p , Typ t , Ap ap
2030
2029
) {
2031
- FwdFlowIn< FwdFlowThroughRestriction > :: fwdFlowIn ( call , _, p , _, cc , innerCc , summaryCtx ,
2032
- argT , argAp , t , ap , _, _, true )
2030
+ FwdFlowIn< FwdFlowThroughRestriction > :: fwdFlowIn ( call , arg , _, p , _, cc , innerCc ,
2031
+ summaryCtx , argT , argAp , t , ap , _, _, true )
2033
2032
}
2034
2033
2035
2034
pragma [ nomagic]
@@ -2052,8 +2051,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2052
2051
DataFlowCall call , FlowState state , CcCall ccc , Ap ap , ApApprox apa , RetNodeEx ret ,
2053
2052
ParamNodeEx innerSummaryCtx , Typ innerArgT , Ap innerArgAp , ApApprox innerArgApa
2054
2053
) {
2055
- fwdFlowThrough0 ( call , _, state , ccc , _, _, _, _, ap , apa , ret , innerSummaryCtx , innerArgT ,
2056
- innerArgAp , innerArgApa )
2054
+ fwdFlowThrough0 ( call , _, _ , state , ccc , _, _, _, _, ap , apa , ret , innerSummaryCtx ,
2055
+ innerArgT , innerArgAp , innerArgApa )
2057
2056
}
2058
2057
2059
2058
pragma [ nomagic]
0 commit comments