Skip to content

Commit 6acb199

Browse files
committed
improve precision using getAnImmediateUse to check parameter names
1 parent abdbe92 commit 6acb199

File tree

1 file changed

+4
-4
lines changed
  • javascript/ql/src/semmle/javascript/frameworks

1 file changed

+4
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ private module MongoDB {
2929
private API::Node getAMongoClient() {
3030
result = API::moduleImport("mongodb").getMember("MongoClient")
3131
or
32-
// slightly imprecise, is not supposed to have a result if the parameter name is "db" (that would be a mongodb v2 `Db`).
33-
result = getAMongoDbCallback().getParameter(1)
32+
result = getAMongoDbCallback().getParameter(1) and
33+
not result.getAnImmediateUse().(DataFlow::ParameterNode).getName() = "db" // mongodb v2 provides a `Db` here
3434
}
3535

3636
/** Gets an api node that refers to a `connect` callback. */
@@ -44,8 +44,8 @@ private module MongoDB {
4444
private API::Node getAMongoDb() {
4545
result = getAMongoClient().getMember("db").getReturn()
4646
or
47-
// slightly imprecise, is not supposed to have a result if the parameter name is "client" (that would be a mongodb v3 `Mongoclient`).
48-
result = getAMongoDbCallback().getParameter(1)
47+
result = getAMongoDbCallback().getParameter(1) and
48+
not result.getAnImmediateUse().(DataFlow::ParameterNode).getName() = "client" // mongodb v3 provides a `Mongoclient` here
4949
}
5050

5151
/**

0 commit comments

Comments
 (0)