File tree Expand file tree Collapse file tree 4 files changed +23
-5
lines changed
src/semmle/javascript/frameworks
test/library-tests/frameworks/SQL Expand file tree Collapse file tree 4 files changed +23
-5
lines changed Original file line number Diff line number Diff line change @@ -224,10 +224,23 @@ private module Sqlite {
224
224
result = sqlite ( ) .getAConstructorInvocation ( "Database" )
225
225
}
226
226
227
- /** A call to a Sqlite query method. */
228
- private class QueryCall extends DatabaseAccess , DataFlow:: ValueNode {
229
- override MethodCallExpr astNode ;
227
+ /** Gets a data flow node referring to a Sqlite database instance. */
228
+ private DataFlow:: SourceNode db ( DataFlow:: TypeTracker t ) {
229
+ t .start ( ) and
230
+ result = newDb ( )
231
+ or
232
+ exists ( DataFlow:: TypeTracker t2 |
233
+ result = db ( t2 ) .track ( t2 , t )
234
+ )
235
+ }
236
+
237
+ /** Gets a data flow node referring to a Sqlite database instance. */
238
+ DataFlow:: SourceNode db ( ) {
239
+ result = db ( DataFlow:: TypeTracker:: end ( ) )
240
+ }
230
241
242
+ /** A call to a Sqlite query method. */
243
+ private class QueryCall extends DatabaseAccess , DataFlow:: MethodCallNode {
231
244
QueryCall ( ) {
232
245
exists ( string meth |
233
246
meth = "all" or
@@ -237,12 +250,12 @@ private module Sqlite {
237
250
meth = "prepare" or
238
251
meth = "run"
239
252
|
240
- this = newDb ( ) .getAMethodCall ( meth )
253
+ this = db ( ) .getAMethodCall ( meth )
241
254
)
242
255
}
243
256
244
257
override DataFlow:: Node getAQueryArgument ( ) {
245
- result = DataFlow :: valueNode ( astNode . getArgument ( 0 ) )
258
+ result = getArgument ( 0 )
246
259
}
247
260
}
248
261
Original file line number Diff line number Diff line change 39
39
| spanner.js:19:16:19:34 | { sql: "SQL code" } |
40
40
| spanner.js:19:23:19:32 | "SQL code" |
41
41
| sqlite.js:7:8:7:45 | "UPDATE ... id = ?" |
42
+ | sqliteImport.js:2:8:2:44 | "UPDATE ... id = ?" |
Original file line number Diff line number Diff line change @@ -5,3 +5,5 @@ var sqlite = require('sqlite3');
5
5
6
6
var db = new sqlite . Database ( ":memory:" ) ;
7
7
db . run ( "UPDATE tbl SET name = ? WHERE id = ?" , "bar" , 2 ) ;
8
+
9
+ exports . db = db ;
Original file line number Diff line number Diff line change
1
+ const { db } = require ( './sqlite' ) ;
2
+ db . run ( "UPDATE foo SET bar = ? WHERE id = ?" , "bar" , 2 ) ;
You can’t perform that action at this time.
0 commit comments