Skip to content

Commit 95937c9

Browse files
committed
JS: Improve sqlite3 model
1 parent 0b21b27 commit 95937c9

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

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

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -342,24 +342,17 @@ private module Sqlite {
342342
}
343343

344344
/** Gets an expression that constructs a Sqlite database instance. */
345-
API::Node newDb() {
345+
API::Node database() {
346346
// new require('sqlite3').Database()
347347
result = sqlite().getMember("Database").getInstance()
348+
or
349+
result = API::Node::ofType("sqlite3", "Database")
348350
}
349351

350352
/** A call to a Sqlite query method. */
351353
private class QueryCall extends DatabaseAccess, DataFlow::MethodCallNode {
352354
QueryCall() {
353-
exists(string meth |
354-
meth = "all" or
355-
meth = "each" or
356-
meth = "exec" or
357-
meth = "get" or
358-
meth = "prepare" or
359-
meth = "run"
360-
|
361-
this = newDb().getMember(meth).getACall()
362-
)
355+
this = database().getMember(["all", "each", "exec", "get", "prepare", "run"]).getACall()
363356
}
364357

365358
override DataFlow::Node getAQueryArgument() { result = getArgument(0) }

javascript/ql/test/library-tests/frameworks/SQL/SqlString.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
| spanner.js:19:16:19:34 | { sql: "SQL code" } |
5555
| spanner.js:19:23:19:32 | "SQL code" |
5656
| spannerImport.js:4:8:4:17 | "SQL code" |
57+
| sqlite-types.ts:4:12:4:49 | "UPDATE ... id = ?" |
5758
| sqlite.js:7:8:7:45 | "UPDATE ... id = ?" |
5859
| sqliteArray.js:6:12:6:49 | "UPDATE ... id = ?" |
5960
| sqliteImport.js:2:8:2:44 | "UPDATE ... id = ?" |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { Database } from "sqlite3";
2+
3+
export function doSomething(db: Database) {
4+
db.run("UPDATE tbl SET name = ? WHERE id = ?", "bar", 2);
5+
}

0 commit comments

Comments
 (0)