Skip to content

Commit 5ea03b1

Browse files
authored
Update Hapi.qll
Add `server` definitions in plugin registration and plugin dependency declaration
1 parent 25ac349 commit 5ea03b1

File tree

1 file changed

+12
-4
lines changed
  • javascript/ql/lib/semmle/javascript/frameworks

1 file changed

+12
-4
lines changed

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,24 @@ module Hapi {
1414
// `server = new Hapi.Server()`
1515
this = DataFlow::moduleMember("hapi", "Server").getAnInstantiation()
1616
or
17-
// server = Glue.compose(manifest, composeOptions)
17+
// `server = Glue.compose(manifest, composeOptions)`
1818
this = DataFlow::moduleMember("@hapi/glue", "compose").getAnInvocation()
1919
or
20-
// server inside a plugin
21-
// TODO match `function (server, options)`
20+
// `register (server, options)`
2221
exists(Function f |
2322
this.(DataFlow::ParameterNode).getParameter() = f.getParameter(0) and
23+
f.getName() = "register" and
2424
f.getParameter(0).getName() = "server" and
2525
f.getParameter(1).getName() = "options"
2626
)
27+
or
28+
// `const after = function (server) {...};`
29+
// `server.dependency('name', after);`
30+
exists(ServerDefinition server, DataFlow::MethodCallNode call |
31+
call = server.ref().getAMethodCall() and
32+
call.getMethodName() = "dependency" and
33+
this = call.getArgument(1).(DataFlow::FunctionNode).getParameter(0)
34+
)
2735
}
2836
}
2937

@@ -261,7 +269,7 @@ module Hapi {
261269
RouteHandlerCandidate() {
262270
exists(string request, string responseToolkit |
263271
(request = "request" or request = "req") and
264-
responseToolkit = "h" and
272+
responseToolkit = ["h", "hapi"] and
265273
// heuristic: parameter names match the Hapi documentation
266274
astNode.getNumParameter() = 2 and
267275
astNode.getParameter(0).getName() = request and

0 commit comments

Comments
 (0)