Skip to content

Commit 9cacfab

Browse files
committed
JS: Recognize Express param value callback as RemoteFlowSource
1 parent a536069 commit 9cacfab

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,13 @@ module Express {
479479
or
480480
kind = "body" and
481481
this.asExpr() = rh.getARequestBodyAccess()
482+
or
483+
// `value` in `router.param('foo', (req, res, next, value) => { ... })`
484+
kind = "parameter" and
485+
exists(RouteSetup setup | rh = setup.getARouteHandler() |
486+
setup.getMethodName() = "param" and
487+
this = rh.(DataFlow::FunctionNode).getParameter(3)
488+
)
482489
}
483490

484491
override RouteHandler getRouteHandler() { result = rh }
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var express = require('express');
2+
var app = express();
3+
4+
app.param('foo', (req, res, next, value) => {
5+
if (value) {
6+
res.send(value);
7+
} else {
8+
next();
9+
}
10+
});
11+
12+
app.get('/hello/:foo', function(req, res) {
13+
res.send("Hello");
14+
});

0 commit comments

Comments
 (0)