Skip to content

Commit f8c5a9a

Browse files
committed
Swift: Test localizedStringWithFormat a bit better.
1 parent 2ae342c commit f8c5a9a

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
failures
21
testFailures
2+
failures

swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class NSString : NSObject, NSCopying, NSMutableCopying {
5252
func copy(with zone: NSZone? = nil) -> Any { return 0 }
5353
func mutableCopy(with zone: NSZone? = nil) -> Any { return 0 }
5454

55-
class func localizedStringWithFormat(_ format: NSString, _ args: CVarArg) -> Self { return (nil as Self?)! }
55+
class func localizedStringWithFormat(_ format: NSString, _ args: CVarArg...) -> Self { return (nil as Self?)! }
5656
class func path(withComponents components: [String]) -> String { return "" }
5757
class func string(withCString bytes: UnsafePointer<CChar>) -> Any? { return nil }
5858
class func string(withCString bytes: UnsafePointer<CChar>, length: Int) -> Any? { return nil }
@@ -185,7 +185,7 @@ func sourceUnsafeMutableRawPointer() -> UnsafeMutableRawPointer { return (nil as
185185
func sourceCString() -> UnsafePointer<CChar> { return (nil as UnsafePointer<CChar>?)! }
186186
func sourceData() -> Data { return Data(0) }
187187
func sourceStringArray() -> [String] { return [] }
188-
188+
func sourceInt() -> Int { return 0 }
189189
func sink(arg: Any) {}
190190

191191
func taintThroughInterpolatedStrings() {
@@ -244,8 +244,8 @@ func taintThroughInterpolatedStrings() {
244244

245245
let harmless = NSString(string: "harmless")
246246
let myRange = NSRange(location:0, length: 128)
247-
248-
sink(arg: NSString.localizedStringWithFormat(sourceNSString(), (nil as CVarArg?)!)) // $ tainted=248
247+
sink(arg: NSString.localizedStringWithFormat(NSString(string: "%i %s %i"), 1, sourceInt(), 3)) // $ MISSING: tainted=247
248+
sink(arg: NSString.localizedStringWithFormat(sourceNSString(), 1, 2, 3)) // $ tainted=248
249249
sink(arg: sourceNSString().character(at: 0)) // $ tainted=249
250250
sink(arg: sourceNSString().cString(using: 0)!) // $ tainted=250
251251
sink(arg: sourceNSString().cString()) // $ tainted=251

swift/ql/test/library-tests/dataflow/taint/libraries/string.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ func taintThroughSimpleStringOperations() {
226226
sink(arg: String(format: tainted, locale: nil, 1, 2, 3)) // $ tainted=217
227227
sink(arg: String(format: tainted, locale: nil, arguments: [])) // $ tainted=217
228228
sink(arg: String.localizedStringWithFormat(tainted, 1, 2, 3)) // $ tainted=217
229+
sink(arg: String.localizedStringWithFormat("%i %s %i", 1, tainted, 3)) // $ tainted=217
229230
sink(arg: String(format: "%s", tainted)) // $ tainted=217
230231
sink(arg: String(format: "%i %i %i", 1, 2, taintedInt)) // $ tainted=218
231232

@@ -235,7 +236,6 @@ func taintThroughSimpleStringOperations() {
235236
sink(arg: tainted.dropFirst(10)) // $ tainted=217
236237
sink(arg: tainted.dropLast(10)) // $ tainted=217
237238
sink(arg: tainted.substring(from: tainted.startIndex)) // $ tainted=217
238-
239239
sink(arg: tainted.lowercased()) // $ tainted=217
240240
sink(arg: tainted.uppercased()) // $ tainted=217
241241
sink(arg: tainted.lowercased(with: nil)) // $ tainted=217

0 commit comments

Comments
 (0)