Skip to content

Commit 6687dfd

Browse files
author
Esben Sparre Andreasen
committed
JS: improve model of express' req.sendFile
1 parent 358b6c3 commit 6687dfd

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,14 +824,18 @@ module Express {
824824
}
825825

826826
/** A call to `response.sendFile`, considered as a file system access. */
827-
private class ResponseSendFileAsFileSystemAccess extends FileSystemAccess, DataFlow::ValueNode {
827+
private class ResponseSendFileAsFileSystemAccess extends FileSystemReadAccess, DataFlow::ValueNode {
828828
override MethodCallExpr astNode;
829829

830830
ResponseSendFileAsFileSystemAccess() {
831831
exists (string name | name = "sendFile" or name = "sendfile" |
832832
asExpr().(MethodCallExpr).calls(any(ResponseExpr res), name))
833833
}
834834

835+
override DataFlow::Node getADataNode() {
836+
none()
837+
}
838+
835839
override DataFlow::Node getAPathArgument() {
836840
result = DataFlow::valueNode(astNode.getArgument(0))
837841
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var express = require('express'),
2+
app = express();
3+
4+
app.get('/getFooFile', function(req, res) {
5+
res.sendFile("foo"); // OK (for now) since this is a server-side response
6+
});

0 commit comments

Comments
 (0)