@@ -1545,15 +1545,17 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1545
1545
apa = getApprox ( ap )
1546
1546
or
1547
1547
// flow into a callable without summary context
1548
- fwdFlowInNoFlowThrough ( node , apa , state , cc , t , ap , stored ) and
1548
+ fwdFlowInNoFlowThrough ( node , state , cc , t , ap , stored ) and
1549
+ apa = getApprox ( ap ) and
1549
1550
summaryCtx = TSummaryCtxNone ( ) and
1550
1551
// When the call contexts of source and sink needs to match then there's
1551
1552
// never any reason to enter a callable except to find a summary. See also
1552
1553
// the comment in `PathNodeMid::isAtSink`.
1553
1554
not Config:: getAFeature ( ) instanceof FeatureEqualSourceSinkCallContext
1554
1555
or
1555
1556
// flow into a callable with summary context (non-linear recursion)
1556
- fwdFlowInFlowThrough ( node , apa , state , cc , t , ap , stored ) and
1557
+ fwdFlowInFlowThrough ( node , state , cc , t , ap , stored ) and
1558
+ apa = getApprox ( ap ) and
1557
1559
summaryCtx = TSummaryCtxSome ( node , state , t , ap , stored )
1558
1560
or
1559
1561
// flow out of a callable
@@ -1562,8 +1564,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1562
1564
or
1563
1565
// flow through a callable
1564
1566
exists ( DataFlowCall call , CcCall ccc , RetNodeEx ret , boolean allowsFieldFlow |
1565
- fwdFlowThrough ( call , cc , state , ccc , summaryCtx , t , ap , apa , stored , ret ) and
1567
+ fwdFlowThrough ( call , cc , state , ccc , summaryCtx , t , ap , stored , ret ) and
1566
1568
flowThroughOutOfCall ( call , ccc , ret , node , allowsFieldFlow ) and
1569
+ apa = getApprox ( ap ) and
1567
1570
not inBarrier ( node , state ) and
1568
1571
if allowsFieldFlow = false then ap instanceof ApNil else any ( )
1569
1572
)
@@ -1572,7 +1575,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1572
1575
private newtype TSummaryCtx =
1573
1576
TSummaryCtxNone ( ) or
1574
1577
TSummaryCtxSome ( ParamNodeEx p , FlowState state , Typ t , Ap ap , TypOption stored ) {
1575
- fwdFlowInFlowThrough ( p , _ , state , _, t , ap , stored )
1578
+ fwdFlowInFlowThrough ( p , state , _, t , ap , stored )
1576
1579
}
1577
1580
1578
1581
/**
@@ -1823,11 +1826,10 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1823
1826
pragma [ inline]
1824
1827
private predicate fwdFlowInCandTypeFlowDisabled (
1825
1828
DataFlowCall call , ArgNodeEx arg , FlowState state , Cc outercc , DataFlowCallable inner ,
1826
- ParamNodeEx p , SummaryCtx summaryCtx , Typ t , Ap ap , ApApprox apa , TypOption stored ,
1827
- boolean cc
1829
+ ParamNodeEx p , SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored , boolean cc
1828
1830
) {
1829
1831
not enableTypeFlow ( ) and
1830
- fwdFlowInCand ( call , arg , state , outercc , inner , p , summaryCtx , t , ap , _, apa , stored , cc )
1832
+ fwdFlowInCand ( call , arg , state , outercc , inner , p , summaryCtx , t , ap , _, _ , stored , cc )
1831
1833
}
1832
1834
1833
1835
pragma [ nomagic]
@@ -1862,15 +1864,15 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1862
1864
predicate fwdFlowIn (
1863
1865
DataFlowCall call , ArgNodeEx arg , DataFlowCallable inner , ParamNodeEx p ,
1864
1866
FlowState state , Cc outercc , CcCall innercc , SummaryCtx summaryCtx , Typ t , Ap ap ,
1865
- ApApprox apa , TypOption stored , boolean cc
1867
+ TypOption stored , boolean cc
1866
1868
) {
1867
1869
// type flow disabled: linear recursion
1868
1870
fwdFlowInCandTypeFlowDisabled ( call , arg , state , outercc , inner , p , summaryCtx , t , ap ,
1869
- apa , stored , cc ) and
1871
+ stored , cc ) and
1870
1872
fwdFlowInValidEdgeTypeFlowDisabled ( call , inner , innercc , pragma [ only_bind_into ] ( cc ) )
1871
1873
or
1872
1874
// type flow enabled: non-linear recursion
1873
- exists ( boolean emptyAp |
1875
+ exists ( boolean emptyAp , ApApprox apa |
1874
1876
fwdFlowIntoArg ( arg , state , outercc , summaryCtx , t , ap , emptyAp , apa , stored , cc ) and
1875
1877
fwdFlowInValidEdgeTypeFlowEnabled ( call , arg , outercc , inner , p , innercc , emptyAp , apa ,
1876
1878
cc )
@@ -1884,10 +1886,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1884
1886
1885
1887
pragma [ nomagic]
1886
1888
private predicate fwdFlowInNoFlowThrough (
1887
- ParamNodeEx p , ApApprox apa , FlowState state , CcCall innercc , Typ t , Ap ap ,
1888
- TypOption stored
1889
+ ParamNodeEx p , FlowState state , CcCall innercc , Typ t , Ap ap , TypOption stored
1889
1890
) {
1890
- FwdFlowInNoThrough:: fwdFlowIn ( _, _, _, p , state , _, innercc , _, t , ap , apa , stored , _)
1891
+ FwdFlowInNoThrough:: fwdFlowIn ( _, _, _, p , state , _, innercc , _, t , ap , stored , _)
1891
1892
}
1892
1893
1893
1894
private predicate top ( ) { any ( ) }
@@ -1896,10 +1897,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1896
1897
1897
1898
pragma [ nomagic]
1898
1899
private predicate fwdFlowInFlowThrough (
1899
- ParamNodeEx p , ApApprox apa , FlowState state , CcCall innercc , Typ t , Ap ap ,
1900
- TypOption stored
1900
+ ParamNodeEx p , FlowState state , CcCall innercc , Typ t , Ap ap , TypOption stored
1901
1901
) {
1902
- FwdFlowInThrough:: fwdFlowIn ( _, _, _, p , state , _, innercc , _, t , ap , apa , stored , _)
1902
+ FwdFlowInThrough:: fwdFlowIn ( _, _, _, p , state , _, innercc , _, t , ap , stored , _)
1903
1903
}
1904
1904
1905
1905
pragma [ nomagic]
@@ -1997,9 +1997,9 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
1997
1997
DataFlowCall call , DataFlowCallable c , ParamNodeEx p , FlowState state , CcCall innercc ,
1998
1998
Typ t , Ap ap , TypOption stored , boolean cc
1999
1999
) {
2000
- FwdFlowInNoThrough:: fwdFlowIn ( call , _, c , p , state , _, innercc , _, t , ap , _ , stored , cc )
2000
+ FwdFlowInNoThrough:: fwdFlowIn ( call , _, c , p , state , _, innercc , _, t , ap , stored , cc )
2001
2001
or
2002
- FwdFlowInThrough:: fwdFlowIn ( call , _, c , p , state , _, innercc , _, t , ap , _ , stored , cc )
2002
+ FwdFlowInThrough:: fwdFlowIn ( call , _, c , p , state , _, innercc , _, t , ap , stored , cc )
2003
2003
}
2004
2004
2005
2005
pragma [ nomagic]
@@ -2070,11 +2070,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2070
2070
pragma [ nomagic]
2071
2071
private predicate fwdFlowRetFromArg (
2072
2072
RetNodeEx ret , FlowState state , CcCall ccc , SummaryCtxSome summaryCtx , Typ t , Ap ap ,
2073
- ApApprox apa , TypOption stored
2073
+ TypOption stored
2074
2074
) {
2075
2075
exists ( ReturnKindExt kind , ParamNodeEx p , Ap argAp |
2076
2076
instanceofCcCall ( ccc ) and
2077
- fwdFlow ( pragma [ only_bind_into ] ( ret ) , state , ccc , summaryCtx , t , ap , apa , stored ) and
2077
+ fwdFlow ( pragma [ only_bind_into ] ( ret ) , state , ccc , summaryCtx , t , ap , _ , stored ) and
2078
2078
summaryCtx =
2079
2079
TSummaryCtxSome ( pragma [ only_bind_into ] ( p ) , _, _, pragma [ only_bind_into ] ( argAp ) , _) and
2080
2080
not outBarrier ( ret , state ) and
@@ -2087,27 +2087,27 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2087
2087
pragma [ inline]
2088
2088
private predicate fwdFlowThrough0 (
2089
2089
DataFlowCall call , ArgNodeEx arg , Cc cc , FlowState state , CcCall ccc ,
2090
- SummaryCtx summaryCtx , Typ t , Ap ap , ApApprox apa , TypOption stored , RetNodeEx ret ,
2090
+ SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored , RetNodeEx ret ,
2091
2091
SummaryCtxSome innerSummaryCtx
2092
2092
) {
2093
- fwdFlowRetFromArg ( ret , state , ccc , innerSummaryCtx , t , ap , apa , stored ) and
2093
+ fwdFlowRetFromArg ( ret , state , ccc , innerSummaryCtx , t , ap , stored ) and
2094
2094
fwdFlowIsEntered ( call , arg , cc , ccc , summaryCtx , innerSummaryCtx )
2095
2095
}
2096
2096
2097
2097
pragma [ nomagic]
2098
2098
private predicate fwdFlowThrough (
2099
2099
DataFlowCall call , Cc cc , FlowState state , CcCall ccc , SummaryCtx summaryCtx , Typ t ,
2100
- Ap ap , ApApprox apa , TypOption stored , RetNodeEx ret
2100
+ Ap ap , TypOption stored , RetNodeEx ret
2101
2101
) {
2102
- fwdFlowThrough0 ( call , _, cc , state , ccc , summaryCtx , t , ap , apa , stored , ret , _)
2102
+ fwdFlowThrough0 ( call , _, cc , state , ccc , summaryCtx , t , ap , stored , ret , _)
2103
2103
}
2104
2104
2105
2105
pragma [ nomagic]
2106
2106
private predicate fwdFlowIsEntered0 (
2107
2107
DataFlowCall call , ArgNodeEx arg , Cc cc , CcCall innerCc , SummaryCtx summaryCtx ,
2108
2108
ParamNodeEx p , FlowState state , Typ t , Ap ap , TypOption stored
2109
2109
) {
2110
- FwdFlowInThrough:: fwdFlowIn ( call , arg , _, p , state , cc , innerCc , summaryCtx , t , ap , _ ,
2110
+ FwdFlowInThrough:: fwdFlowIn ( call , arg , _, p , state , cc , innerCc , summaryCtx , t , ap ,
2111
2111
stored , _)
2112
2112
}
2113
2113
@@ -2143,7 +2143,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
2143
2143
DataFlowCall call , FlowState state , CcCall ccc , Ap ap , RetNodeEx ret ,
2144
2144
SummaryCtxSome innerSummaryCtx
2145
2145
) {
2146
- fwdFlowThrough0 ( call , _, _, state , ccc , _, _, ap , _, _ , ret , innerSummaryCtx )
2146
+ fwdFlowThrough0 ( call , _, _, state , ccc , _, _, ap , _, ret , innerSummaryCtx )
2147
2147
}
2148
2148
2149
2149
pragma [ nomagic]
@@ -3120,11 +3120,11 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3120
3120
SummaryCtx outerSummaryCtx , SummaryCtx innerSummaryCtx , Typ t , Ap ap , TypOption stored
3121
3121
) {
3122
3122
FwdFlowInNoThrough:: fwdFlowIn ( _, arg , _, p , state , outercc , innercc , outerSummaryCtx , t ,
3123
- ap , _ , stored , _) and
3123
+ ap , stored , _) and
3124
3124
innerSummaryCtx = TSummaryCtxNone ( )
3125
3125
or
3126
3126
FwdFlowInThrough:: fwdFlowIn ( _, arg , _, p , state , outercc , innercc , outerSummaryCtx , t ,
3127
- ap , _ , stored , _) and
3127
+ ap , stored , _) and
3128
3128
innerSummaryCtx = TSummaryCtxSome ( p , state , t , ap , stored )
3129
3129
}
3130
3130
@@ -3134,7 +3134,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3134
3134
SummaryCtx summaryCtx , Typ t , Ap ap , TypOption stored , RetNodeEx ret ,
3135
3135
SummaryCtxSome innerSummaryCtx
3136
3136
) {
3137
- fwdFlowThrough0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , _ , stored , ret ,
3137
+ fwdFlowThrough0 ( call , arg , cc , state , ccc , summaryCtx , t , ap , stored , ret ,
3138
3138
innerSummaryCtx )
3139
3139
}
3140
3140
0 commit comments