Skip to content

Commit dcba1b9

Browse files
committed
Swift: Tests for Substring.
1 parent 59c43c7 commit dcba1b9

File tree

1 file changed

+29
-0
lines changed
  • swift/ql/test/library-tests/dataflow/taint/libraries

1 file changed

+29
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -648,3 +648,32 @@ func furtherTaintThroughCallbacks() {
648648
let result6 = try? tainted.withContiguousStorageIfAvailable(callbackWithTaintedPointer)
649649
sink(arg: result6!) // $ tainted=612
650650
}
651+
652+
func testSubstringMembers() {
653+
let clean = ""
654+
let tainted = source2()
655+
656+
let sub1 = tainted[..<tainted.index(tainted.endIndex, offsetBy: -5)]
657+
sink(arg: sub1) // $ tainted=654
658+
sink(arg: sub1.base) // $ MISSING: tainted=
659+
sink(arg: sub1.utf8) // $ MISSING: tainted=
660+
sink(arg: sub1.capitalized) // $ tainted=654
661+
sink(arg: sub1.description) // $ tainted=654
662+
663+
var sub2 = tainted[tainted.index(tainted.startIndex, offsetBy: 5)...]
664+
sink(arg: sub2) // $ tainted=654
665+
let result1 = sub2.withUTF8({
666+
buffer in
667+
sink(arg: buffer[0]) // $ MISSING: tainted=
668+
return source()
669+
})
670+
sink(arg: result1) // $ MISSING: tainted=
671+
672+
let sub3 = Substring(sub2.utf8)
673+
sink(arg: sub3) // $ MISSING: tainted=
674+
675+
var sub4 = clean.prefix(10)
676+
sink(arg: sub4)
677+
sub4.replaceSubrange(..<clean.endIndex, with: sub1)
678+
sink(arg: sub4) // $ MISSING: tainted=
679+
}

0 commit comments

Comments
 (0)