@@ -95,20 +95,18 @@ func sqlite3_finalize(
9595 _ pStmt: OpaquePointer ?
9696 ) -> Int32 { return SQLITE_OK }
9797
98- func sanitize( _ string: String ) -> String { return string }
99-
10098// --- tests ---
10199
102100func test_sqlite3_c_api( db: OpaquePointer ? ) {
103101 let localString = " user "
104102 let remoteString = try ! String ( contentsOf: URL ( string: " http://example.com/ " ) !)
105- let sanitizedString = sanitize ( remoteString)
103+ let remoteNumber = Int ( remoteString) ?? 0
106104
107105 let unsafeQuery1 = remoteString
108106 let unsafeQuery2 = " SELECT * FROM users WHERE username=' " + remoteString + " ' "
109107 let unsafeQuery3 = " SELECT * FROM users WHERE username=' \( remoteString) ' "
110108 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 ) ' "
112110 let varQuery = " SELECT * FROM users WHERE username=? "
113111
114112 // --- exec ---
@@ -117,7 +115,7 @@ func test_sqlite3_c_api(db: OpaquePointer?) {
117115 let result2 = sqlite3_exec ( db, unsafeQuery2, nil , nil , nil ) // BAD
118116 let result3 = sqlite3_exec ( db, unsafeQuery3, nil , nil , nil ) // BAD
119117 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
121119
122120 // --- prepared statements ---
123121
@@ -142,22 +140,12 @@ func test_sqlite3_c_api(db: OpaquePointer?) {
142140 var stmt3 : OpaquePointer ?
143141
144142 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
146144 let result = sqlite3_step ( stmt3)
147145 // ...
148146 }
149147 }
150148 sqlite3_finalize ( stmt3)
151149
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-
162150 // TODO: use all versions v3, 16 etc.
163151}
0 commit comments