File tree Expand file tree Collapse file tree 1 file changed +22
-1
lines changed
javascript/ql/lib/semmle/javascript/frameworks Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -9,10 +9,21 @@ module Hapi {
9
9
/**
10
10
* An expression that creates a new Hapi server.
11
11
*/
12
- class ServerDefinition extends Http:: Servers:: StandardServerDefinition , DataFlow:: NewNode {
12
+ class ServerDefinition extends Http:: Servers:: StandardServerDefinition , DataFlow:: Node {
13
13
ServerDefinition ( ) {
14
14
// `server = new Hapi.Server()`
15
15
this = DataFlow:: moduleMember ( "hapi" , "Server" ) .getAnInstantiation ( )
16
+ or
17
+ // server = Glue.compose(manifest, composeOptions)
18
+ this = DataFlow:: moduleMember ( "@hapi/glue" , "compose" ) .getAnInvocation ( )
19
+ or
20
+ // server inside a plugin
21
+ // TODO match `function (server, options)`
22
+ exists ( Function f |
23
+ this .( DataFlow:: ParameterNode ) .getParameter ( ) = f .getParameter ( 0 ) and
24
+ f .getParameter ( 0 ) .getName ( ) = "server" and
25
+ f .getParameter ( 1 ) .getName ( ) = "options"
26
+ )
16
27
}
17
28
}
18
29
@@ -209,6 +220,16 @@ module Hapi {
209
220
// server.ext('/', fun)
210
221
this .getMethodName ( ) = "ext" and
211
222
handler = this .getArgument ( 1 )
223
+ or
224
+ // server.route([{ handler(request){}])
225
+ this .getMethodName ( ) = "route" and
226
+ handler =
227
+ this .getArgument ( 0 )
228
+ .( DataFlow:: ArrayLiteralNode )
229
+ .getAnElement ( )
230
+ .( DataFlow:: ObjectLiteralNode )
231
+ .getAPropertySource ( "handler" )
232
+ .getAFunctionValue ( )
212
233
)
213
234
}
214
235
You can’t perform that action at this time.
0 commit comments