File tree Expand file tree Collapse file tree 3 files changed +30
-5
lines changed
javascript/ql/src/semmle/javascript/frameworks Expand file tree Collapse file tree 3 files changed +30
-5
lines changed Original file line number Diff line number Diff line change @@ -657,7 +657,7 @@ module Express {
657657 /**
658658 * An Express server application.
659659 */
660- private class Application extends HTTP:: ServerDefinition , DataFlow :: TrackedExpr {
660+ private class Application extends HTTP:: ServerDefinition {
661661 Application ( ) { this = appCreation ( ) .asExpr ( ) }
662662
663663 /**
@@ -671,9 +671,23 @@ module Express {
671671 /**
672672 * An Express router.
673673 */
674- class RouterDefinition extends InvokeExpr , DataFlow :: TrackedExpr {
674+ class RouterDefinition extends InvokeExpr {
675675 RouterDefinition ( ) { this = routerCreation ( ) .asExpr ( ) }
676676
677+ private DataFlow:: SourceNode ref ( DataFlow:: TypeTracker t ) {
678+ t .start ( ) and
679+ result = DataFlow:: exprNode ( this )
680+ or
681+ exists ( DataFlow:: TypeTracker t2 | result = ref ( t2 ) .track ( t2 , t ) )
682+ }
683+
684+ /**
685+ * Holds if `sink` may refer to this router.
686+ */
687+ predicate flowsTo ( Expr sink ) {
688+ ref ( DataFlow:: TypeTracker:: end ( ) ) .flowsToExpr ( sink )
689+ }
690+
677691 /**
678692 * Gets a `RouteSetup` that was used for setting up a route on this router.
679693 */
Original file line number Diff line number Diff line change @@ -248,8 +248,20 @@ module HTTP {
248248 /**
249249 * A standard server definition.
250250 */
251- abstract class StandardServerDefinition extends ServerDefinition , DataFlow :: TrackedExpr {
251+ abstract class StandardServerDefinition extends ServerDefinition {
252252 override RouteHandler getARouteHandler ( ) { result .( StandardRouteHandler ) .getServer ( ) = this }
253+
254+ private DataFlow:: SourceNode ref ( DataFlow:: TypeTracker t ) {
255+ t .start ( ) and
256+ result = DataFlow:: exprNode ( this )
257+ or
258+ exists ( DataFlow:: TypeTracker t2 | result = ref ( t2 ) .track ( t2 , t ) )
259+ }
260+
261+ /**
262+ * Holds if `sink` may refer to this server definition.
263+ */
264+ predicate flowsTo ( Expr sink ) { ref ( DataFlow:: TypeTracker:: end ( ) ) .flowsToExpr ( sink ) }
253265 }
254266
255267 /**
Original file line number Diff line number Diff line change @@ -9,8 +9,7 @@ module Restify {
99 /**
1010 * An expression that creates a new Restify server.
1111 */
12- class ServerDefinition extends HTTP:: Servers:: StandardServerDefinition , CallExpr ,
13- DataFlow:: TrackedExpr {
12+ class ServerDefinition extends HTTP:: Servers:: StandardServerDefinition , CallExpr {
1413 ServerDefinition ( ) {
1514 // `server = restify.createServer()`
1615 this = DataFlow:: moduleMember ( "restify" , "createServer" ) .getACall ( ) .asExpr ( )
You can’t perform that action at this time.
0 commit comments