Skip to content

Commit 4c2a623

Browse files
committed
Swift: Add tests for array append/insert.
1 parent 2e93c1d commit 4c2a623

File tree

1 file changed

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

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
// --- stubs ---
3+
4+
// --- tests ---
5+
6+
func source(_ label: String) -> Int { return 0 }
7+
func sink(arg: Any) {}
8+
9+
// ---
10+
11+
func testArray() {
12+
let arrClean = Array<Int>()
13+
14+
var arr1 = Array<Int>()
15+
arr1.append(1)
16+
sink(arg: arr1[arr1.endIndex - 1])
17+
arr1.append(source("int1"))
18+
sink(arg: arr1[arr1.endIndex - 1]) // $ tainted=int1
19+
20+
var arr2 = Array<Int>()
21+
arr2.append(contentsOf: arrClean)
22+
sink(arg: arr2[arr2.endIndex - 1])
23+
arr2.append(contentsOf: arr1)
24+
sink(arg: arr2[arr2.endIndex - 1]) // $ tainted=int1
25+
26+
var arr3 = Array<Int>()
27+
arr3.insert(1, at: 0)
28+
sink(arg: arr3[0])
29+
arr3.insert(source("int3"), at: 0)
30+
sink(arg: arr3[0]) // $ tainted=int3
31+
32+
var arr4 = Array<Int>()
33+
arr4.insert(contentsOf: arrClean, at: 0)
34+
sink(arg: arr4[0])
35+
arr4.insert(contentsOf: arr3, at: 0)
36+
sink(arg: arr4[0]) // $ MISSING: tainted=int3
37+
38+
var arr5 = Array<Int>()
39+
arr5.insert(contentsOf: 1...10, at: 0)
40+
sink(arg: arr5[arr5.endIndex - 1])
41+
arr5.insert(contentsOf: 1...source("int5"), at: 0)
42+
sink(arg: arr5[arr5.endIndex - 1]) // $ MISSING: tainted=int5
43+
}

0 commit comments

Comments
 (0)