@@ -95,20 +95,18 @@ func sqlite3_finalize(
95
95
_ pStmt: OpaquePointer ?
96
96
) -> Int32 { return SQLITE_OK }
97
97
98
- func sanitize( _ string: String ) -> String { return string }
99
-
100
98
// --- tests ---
101
99
102
100
func test_sqlite3_c_api( db: OpaquePointer ? ) {
103
101
let localString = " user "
104
102
let remoteString = try ! String ( contentsOf: URL ( string: " http://example.com/ " ) !)
105
- let sanitizedString = sanitize ( remoteString)
103
+ let remoteNumber = Int ( remoteString) ?? 0
106
104
107
105
let unsafeQuery1 = remoteString
108
106
let unsafeQuery2 = " SELECT * FROM users WHERE username=' " + remoteString + " ' "
109
107
let unsafeQuery3 = " SELECT * FROM users WHERE username=' \( remoteString) ' "
110
108
let safeQuery1 = " SELECT * FROM users WHERE username=' \( localString) ' "
111
- let safeQuery2 = " SELECT * FROM users WHERE username=' \( sanitizedString ) ' "
109
+ let safeQuery2 = " SELECT * FROM users WHERE username=' \( remoteNumber ) ' "
112
110
let varQuery = " SELECT * FROM users WHERE username=? "
113
111
114
112
// --- exec ---
@@ -117,7 +115,7 @@ func test_sqlite3_c_api(db: OpaquePointer?) {
117
115
let result2 = sqlite3_exec ( db, unsafeQuery2, nil , nil , nil ) // BAD
118
116
let result3 = sqlite3_exec ( db, unsafeQuery3, nil , nil , nil ) // BAD
119
117
let result4 = sqlite3_exec ( db, safeQuery1, nil , nil , nil ) // GOOD
120
- let result5 = sqlite3_exec ( db, safeQuery2, nil , nil , nil ) // GOOD (sanitized)
118
+ let result5 = sqlite3_exec ( db, safeQuery2, nil , nil , nil ) // GOOD
121
119
122
120
// --- prepared statements ---
123
121
@@ -142,22 +140,12 @@ func test_sqlite3_c_api(db: OpaquePointer?) {
142
140
var stmt3 : OpaquePointer ?
143
141
144
142
if ( sqlite3_prepare ( db, varQuery, - 1 , & stmt3, nil ) == SQLITE_OK) { // GOOD
145
- if ( sqlite3_bind_text ( stmt3, 1 , sanitizedString , - 1 , SQLITE_TRANSIENT) == SQLITE_OK) { // GOOD
143
+ if ( sqlite3_bind_text ( stmt3, 1 , remoteString , - 1 , SQLITE_TRANSIENT) == SQLITE_OK) { // GOOD
146
144
let result = sqlite3_step ( stmt3)
147
145
// ...
148
146
}
149
147
}
150
148
sqlite3_finalize ( stmt3)
151
149
152
- var stmt4 : OpaquePointer ?
153
-
154
- if ( sqlite3_prepare_v2 ( db, varQuery, - 1 , & stmt4, nil ) == SQLITE_OK) { // GOOD
155
- if ( sqlite3_bind_text ( stmt4, 1 , remoteString, - 1 , SQLITE_TRANSIENT) == SQLITE_OK) { // GOOD???
156
- let result = sqlite3_step ( stmt4)
157
- // ...
158
- }
159
- }
160
- sqlite3_finalize ( stmt4)
161
-
162
150
// TODO: use all versions v3, 16 etc.
163
151
}
0 commit comments