Skip to content

Commit a59ed5b

Browse files
committed
Swift: Add test cases.
1 parent dc9f171 commit a59ed5b

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ protocol NSMutableCopying {
2525

2626
class NSString : NSObject, NSCopying, NSMutableCopying {
2727
struct EncodingConversionOptions : OptionSet { let rawValue: Int }
28-
2928
struct CompareOptions : OptionSet { let rawValue: Int }
29+
struct EnumerationOptions : OptionSet { let rawValue: Int }
3030

3131
init(characters: UnsafePointer<unichar>, length: Int) {}
3232
init(charactersNoCopy characters: UnsafeMutablePointer<unichar>, length: Int, freeWhenDone freeBuffer: Bool) {}
@@ -83,6 +83,7 @@ class NSString : NSObject, NSCopying, NSMutableCopying {
8383
func folding(options: NSString.CompareOptions = [], locale: Locale?) -> String { return "" }
8484
func applyingTransform(_ transform: StringTransform, reverse: Bool) -> String? { return "" }
8585
func enumerateLines(_ block: @escaping (String, UnsafeMutablePointer<ObjCBool>) -> Void) { }
86+
func enumerateSubstrings(in range: NSRange, options opts: NSString.EnumerationOptions = [], using block: @escaping (String?, NSRange, NSRange, UnsafeMutablePointer<ObjCBool>) -> Void) { }
8687
func replacingOccurrences(of target: String, with replacement: String) -> String { return "" }
8788
func replacingOccurrences(of target: String, with replacement: String, options: NSString.CompareOptions = [], range searchRange: NSRange) -> String { return "" }
8889
func propertyList() -> Any { return 0 }
@@ -136,8 +137,7 @@ class NSMutableString : NSString {
136137
func setString(_ aString: String) {}
137138
}
138139

139-
class NSArray : NSObject {
140-
}
140+
class NSArray : NSObject { }
141141

142142
struct _NSRange {
143143
init(location: Int, length: Int) {}
@@ -485,3 +485,13 @@ func taintThroughData() {
485485
let str2 = NSString(data: data1, encoding: 0)!
486486
sink(arg: str2) // $ tainted=482
487487
}
488+
489+
func moreTests() {
490+
let myTainted = sourceNSString()
491+
let myRange = NSRange(location:0, length: 128)
492+
493+
sink(arg: myTainted.enumerateSubstrings(in: myRange, options: [], using: {
494+
substring, substringRange, enclosingRange, stop in
495+
sink(arg: substring!) // $ MISSING: tainted=
496+
}))
497+
}

0 commit comments

Comments
 (0)