Skip to content

Commit 9767064

Browse files
committed
Swift: Fix bug for sqlite3_prepare_v3.
1 parent 1221cba commit 9767064

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

swift/ql/src/queries/Security/CWE-089/SqlInjection.ql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class CApiSqlSink extends SqlSink {
3131
f.getName() =
3232
[
3333
"sqlite3_exec(_:_:_:_:_:)", "sqlite3_prepare(_:_:_:_:_:)",
34-
"sqlite3_prepare_v2(_:_:_:_:_:)", "sqlite3_prepare_v3(_:_:_:_:_:)",
34+
"sqlite3_prepare_v2(_:_:_:_:_:)", "sqlite3_prepare_v3(_:_:_:_:_:_:)",
3535
"sqlite3_prepare16(_:_:_:_:_:)", "sqlite3_prepare16_v2(_:_:_:_:_:)",
36-
"sqlite3_prepare16_v3(_:_:_:_:_:)"
36+
"sqlite3_prepare16_v3(_:_:_:_:_:_:)"
3737
] and
3838
call.getStaticTarget() = f and
3939
call.getArgument(1).getExpr() = this.asExpr()

swift/ql/test/query-tests/Security/CWE-089/SqlInjection.expected

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ edges
1919
| sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 |
2020
| sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 |
2121
| sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 |
22+
| sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 |
2223
nodes
2324
| SQLite.swift:62:26:62:80 | call to init(contentsOf:) : | semmle.label | call to init(contentsOf:) : |
2425
| SQLite.swift:73:17:73:17 | unsafeQuery1 | semmle.label | unsafeQuery1 |
@@ -42,6 +43,7 @@ nodes
4243
| sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 | semmle.label | unsafeQuery3 |
4344
| sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 | semmle.label | unsafeQuery3 |
4445
| sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 | semmle.label | unsafeQuery3 |
46+
| sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 | semmle.label | unsafeQuery3 |
4547
subpaths
4648
#select
4749
| SQLite.swift:73:17:73:17 | unsafeQuery1 | SQLite.swift:62:26:62:80 | call to init(contentsOf:) : | SQLite.swift:73:17:73:17 | unsafeQuery1 | This query depends on a $@. | SQLite.swift:62:26:62:80 | call to init(contentsOf:) | user-provided value |
@@ -64,3 +66,4 @@ subpaths
6466
| sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:135:33:135:33 | unsafeQuery3 | This query depends on a $@. | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) | user-provided value |
6567
| sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:145:26:145:26 | unsafeQuery3 | This query depends on a $@. | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) | user-provided value |
6668
| sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:175:29:175:29 | unsafeQuery3 | This query depends on a $@. | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) | user-provided value |
69+
| sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) : | sqlite3_c_api.swift:183:29:183:29 | unsafeQuery3 | This query depends on a $@. | sqlite3_c_api.swift:122:26:122:80 | call to init(contentsOf:) | user-provided value |

swift/ql/test/query-tests/Security/CWE-089/sqlite3_c_api.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ func test_sqlite3_c_api(db: OpaquePointer?, buffer: UnsafeMutablePointer<UInt8>)
180180

181181
var stmt5: OpaquePointer?
182182

183-
if (sqlite3_prepare_v3(db, unsafeQuery3, -1, 0, &stmt5, nil) == SQLITE_OK) { // BAD [NOT DETECTED]
183+
if (sqlite3_prepare_v3(db, unsafeQuery3, -1, 0, &stmt5, nil) == SQLITE_OK) { // BAD
184184
let result = sqlite3_step(stmt5)
185185
// ...
186186
}

0 commit comments

Comments
 (0)