@@ -4206,11 +4206,10 @@ private module Subpaths {
42064206 pragma [ nomagic]
42074207 private predicate subpaths01 (
42084208 PathNodeImpl arg , ParamNodeEx par , SummaryCtxSome sc , CallContext innercc , ReturnKindExt kind ,
4209- NodeEx out , FlowState sout , CallContext ccout , AccessPath apout
4209+ NodeEx out , FlowState sout , AccessPath apout
42104210 ) {
42114211 exists ( Configuration config |
4212- pathThroughCallable ( arg , out , pragma [ only_bind_into ] ( sout ) , ccout ,
4213- pragma [ only_bind_into ] ( apout ) ) and
4212+ pathThroughCallable ( arg , out , pragma [ only_bind_into ] ( sout ) , _, pragma [ only_bind_into ] ( apout ) ) and
42144213 pathIntoCallable ( arg , par , _, _, innercc , sc , _, config ) and
42154214 paramFlowsThrough ( kind , pragma [ only_bind_into ] ( sout ) , innercc , sc ,
42164215 pragma [ only_bind_into ] ( apout ) , _, unbindConf ( config ) ) and
@@ -4225,11 +4224,10 @@ private module Subpaths {
42254224 pragma [ nomagic]
42264225 private predicate subpaths02 (
42274226 PathNode arg , ParamNodeEx par , SummaryCtxSome sc , CallContext innercc , ReturnKindExt kind ,
4228- NodeEx out , FlowState sout , CallContext ccout , AccessPath apout , Configuration config
4227+ NodeEx out , FlowState sout , AccessPath apout
42294228 ) {
4230- subpaths01 ( arg , par , sc , innercc , kind , out , sout , ccout , apout ) and
4231- out .asNode ( ) = kind .getAnOutNode ( _) and
4232- config = getPathNodeConf ( arg )
4229+ subpaths01 ( arg , par , sc , innercc , kind , out , sout , apout ) and
4230+ out .asNode ( ) = kind .getAnOutNode ( _)
42334231 }
42344232
42354233 pragma [ nomagic]
@@ -4240,14 +4238,12 @@ private module Subpaths {
42404238 */
42414239 pragma [ nomagic]
42424240 private predicate subpaths03 (
4243- PathNodeMid arg , ParamNodeEx par , PathNodeMid ret , NodeEx out , FlowState sout ,
4244- CallContext ccout , AccessPath apout , SummaryCtx scout , Configuration config
4241+ PathNode arg , ParamNodeEx par , PathNodeMid ret , NodeEx out , FlowState sout , AccessPath apout
42454242 ) {
42464243 exists ( SummaryCtxSome sc , CallContext innercc , ReturnKindExt kind , RetNodeEx retnode |
4247- subpaths02 ( arg , par , sc , innercc , kind , out , sout , ccout , apout , config ) and
4248- pathNode ( ret , retnode , sout , innercc , sc , apout , config , _) and
4249- kind = retnode .getKind ( ) and
4250- scout = arg .getSummaryCtx ( )
4244+ subpaths02 ( arg , par , sc , innercc , kind , out , sout , apout ) and
4245+ pathNode ( ret , retnode , sout , innercc , sc , apout , unbindConf ( getPathNodeConf ( arg ) ) , _) and
4246+ kind = retnode .getKind ( )
42514247 )
42524248 }
42534249
@@ -4267,17 +4263,16 @@ private module Subpaths {
42674263 * `ret -> out` is summarized as the edge `arg -> out`.
42684264 */
42694265 predicate subpaths ( PathNode arg , PathNodeImpl par , PathNodeImpl ret , PathNode out ) {
4270- exists (
4271- ParamNodeEx p , NodeEx o , FlowState sout , AccessPath apout , CallContext ccout ,
4272- SummaryCtx scout , PathNodeMid out0 , Configuration config
4273- |
4274- pragma [ only_bind_into ] ( arg ) .getASuccessor ( ) = par and
4275- subpaths03 ( arg , p , localStepToHidden * ( ret ) , o , sout , ccout , apout , scout , config ) and
4276- pathNode ( out0 , o , sout , ccout , scout , apout , config , _) and
4266+ exists ( ParamNodeEx p , NodeEx o , FlowState sout , AccessPath apout , PathNodeMid out0 |
4267+ pragma [ only_bind_into ] ( arg ) .getASuccessor ( ) = pragma [ only_bind_into ] ( par ) and
4268+ pragma [ only_bind_into ] ( arg ) .getASuccessor ( ) = out0 and
4269+ subpaths03 ( pragma [ only_bind_into ] ( arg ) , p , localStepToHidden * ( ret ) , o , sout , apout ) and
42774270 not ret .isHidden ( ) and
4278- par .getNodeEx ( ) = p
4279- |
4280- out = out0 or out = out0 .projectToSink ( )
4271+ par .getNodeEx ( ) = p and
4272+ out0 .getNodeEx ( ) = o and
4273+ out0 .getState ( ) = sout and
4274+ out0 .getAp ( ) = apout and
4275+ ( out = out0 or out = out0 .projectToSink ( ) )
42814276 )
42824277 }
42834278
0 commit comments