Skip to content

Commit fd48927

Browse files
author
Esben Sparre Andreasen
committed
JS: refactor Hapi::RouteSetup
1 parent b638961 commit fd48927

File tree

1 file changed

+15
-10
lines changed
  • javascript/ql/src/semmle/javascript/frameworks

1 file changed

+15
-10
lines changed

javascript/ql/src/semmle/javascript/frameworks/Hapi.qll

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -194,22 +194,27 @@ module Hapi {
194194
*/
195195
class RouteSetup extends MethodCallExpr, HTTP::Servers::StandardRouteSetup {
196196
ServerDefinition server;
197-
string methodName;
197+
Expr handler;
198198

199199
RouteSetup() {
200200
server.flowsTo(getReceiver()) and
201-
methodName = getMethodName() and
202-
(methodName = "route" or methodName = "ext")
201+
(
202+
// server.route({ handler: fun })
203+
getMethodName() = "route" and
204+
hasOptionArgument(0, "handler", handler)
205+
or
206+
// server.ext('/', fun)
207+
getMethodName() = "ext" and
208+
handler = getArgument(1)
209+
)
203210
}
204211

205212
override DataFlow::SourceNode getARouteHandler() {
206-
// server.route({ handler: fun })
207-
methodName = "route" and
208-
result.flowsToExpr(any(Expr e | hasOptionArgument(0, "handler", e)))
209-
or
210-
// server.ext('/', fun)
211-
methodName = "ext" and
212-
result.flowsToExpr(getArgument(1))
213+
result.(DataFlow::SourceNode).flowsTo(handler.flow())
214+
}
215+
216+
Expr getRouteHandlerExpr() {
217+
result = handler
213218
}
214219

215220
override Expr getServer() {

0 commit comments

Comments
 (0)