Skip to content

Commit 54a4477

Browse files
committed
v1
1 parent 7723dbc commit 54a4477

File tree

1 file changed

+31
-1
lines changed
  • javascript/ql/lib/semmle/javascript/frameworks

1 file changed

+31
-1
lines changed

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ private module Postgres {
243243
/**
244244
* Provides classes modeling the `sqlite3` package.
245245
*/
246-
private module Sqlite {
246+
private module Sqlite3 {
247247
/** Gets an expression that constructs or returns a Sqlite database instance. */
248248
API::Node database() { result = API::Node::ofType("sqlite3", "Database") }
249249

@@ -267,6 +267,36 @@ private module Sqlite {
267267
}
268268
}
269269

270+
/**
271+
* Provides classes modeling the `sqlite` package.
272+
*/
273+
private module Sqlite {
274+
/** Gets an expression that constructs or returns a Sqlite database instance. */
275+
API::Node database() {
276+
result =
277+
[
278+
API::moduleImport("sqlite").getMember("open").getReturn(),
279+
API::moduleImport("sqlite").getMember("open").getReturn().getPromised()
280+
]
281+
}
282+
283+
/** A call to a Sqlite query method. */
284+
private class QueryCall extends DatabaseAccess, API::CallNode {
285+
QueryCall() {
286+
this = database().getMember(["all", "each", "exec", "get", "prepare", "run"]).getACall()
287+
}
288+
289+
override DataFlow::Node getAResult() { result = this.getReturn().asSource() }
290+
291+
override DataFlow::Node getAQueryArgument() { result = this.getArgument(0) }
292+
}
293+
294+
/** An expression that is passed to the `query` method and hence interpreted as SQL. */
295+
class QueryString extends SQL::SqlString {
296+
QueryString() { this = any(QueryCall qc).getAQueryArgument() }
297+
}
298+
}
299+
270300
/**
271301
* Provides classes modeling the `mssql` package.
272302
*/

0 commit comments

Comments
 (0)