@@ -466,11 +466,14 @@ module Express {
466
466
/**
467
467
* Gets a reference to the "query" or "params" object from a request-object originating from route-handler `rh`.
468
468
*/
469
- DataFlow:: SourceNode getAQueryObjectReference ( DataFlow:: TypeTracker t , RouteHandler rh ) {
470
- t .startInProp ( [ "params" , "query" ] ) and
469
+ DataFlow:: SourceNode getAQueryObjectReference (
470
+ DataFlow:: TypeTracker t , RouteHandler rh , string prop
471
+ ) {
472
+ prop = [ "params" , "query" ] and
473
+ t .startInProp ( prop ) and
471
474
result = rh .getARequestSource ( )
472
475
or
473
- exists ( DataFlow:: TypeTracker t2 | result = getAQueryObjectReference ( t2 , rh ) .track ( t2 , t ) )
476
+ exists ( DataFlow:: TypeTracker t2 | result = getAQueryObjectReference ( t2 , rh , prop ) .track ( t2 , t ) )
474
477
}
475
478
476
479
/**
@@ -482,7 +485,7 @@ module Express {
482
485
483
486
RequestInputAccess ( ) {
484
487
kind = "parameter" and
485
- this = getAQueryObjectReference ( DataFlow:: TypeTracker:: end ( ) , rh ) .getAPropertyRead ( )
488
+ this = getAQueryObjectReference ( DataFlow:: TypeTracker:: end ( ) , rh , _ ) .getAPropertyRead ( )
486
489
or
487
490
exists ( DataFlow:: SourceNode request | request = rh .getARequestSource ( ) .ref ( ) |
488
491
kind = "parameter" and
@@ -527,13 +530,11 @@ module Express {
527
530
kind = "parameter" and
528
531
exists ( DataFlow:: Node request | request = DataFlow:: valueNode ( rh .getARequestExpr ( ) ) |
529
532
this .( DataFlow:: MethodCallNode ) .calls ( request , "param" )
530
- or
531
- exists ( DataFlow:: PropRead base |
532
- // `req.query.name`
533
- base .accesses ( request , "query" ) and
534
- this = base .getAPropertyReference ( _)
535
- )
536
533
)
534
+ or
535
+ // `req.query.name`
536
+ kind = "parameter" and
537
+ this = getAQueryObjectReference ( DataFlow:: TypeTracker:: end ( ) , rh , "query" ) .getAPropertyRead ( )
537
538
}
538
539
}
539
540
0 commit comments