Skip to content

Commit bbeb7b3

Browse files
committed
add better-sqlite3
1 parent 97c27ac commit bbeb7b3

File tree

1 file changed

+29
-0
lines changed
  • javascript/ql/lib/semmle/javascript/frameworks

1 file changed

+29
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,35 @@ private module Sqlite {
297297
}
298298
}
299299

300+
/**
301+
* Provides classes modeling the `better-sqlite3` package.
302+
*/
303+
private module BetterSqlite3 {
304+
/** Gets an expression that constructs or returns a better-sqlite3 database instance. */
305+
API::Node database() {
306+
result =
307+
[
308+
API::moduleImport("better-sqlite3").getMember("Database"),
309+
API::moduleImport("better-sqlite3").getReturn()
310+
]
311+
}
312+
313+
/** A call to a better-sqlite3 query method. */
314+
private class QueryCall extends DatabaseAccess, DataFlow::MethodCallNode {
315+
QueryCall() {
316+
this = database().getMember(["exec", "prepare"]).getACall() or
317+
this = database().getMember("exec").getReturn().getMember("prepare").getACall()
318+
}
319+
320+
override DataFlow::Node getAQueryArgument() { result = this.getArgument(0) }
321+
}
322+
323+
/** An expression that is passed to the `query` method and hence interpreted as SQL. */
324+
class QueryString extends SQL::SqlString {
325+
QueryString() { this = any(QueryCall qc).getAQueryArgument() }
326+
}
327+
}
328+
300329
/**
301330
* Provides classes modeling the `mssql` package.
302331
*/

0 commit comments

Comments
 (0)