1
1
2
2
// --- stubs ---
3
3
4
- func sourceString( ) -> String { return " " }
5
- func sourceUInt8( ) -> UInt8 { return 0 }
4
+ func sourceString( _ label : String ) -> String { return " " }
5
+ func sourceUInt8( _ label : String ) -> UInt8 { return 0 }
6
6
func sink( arg: Any ) { }
7
7
8
8
// --- tests ---
@@ -18,14 +18,14 @@ func taintPointer(ptr: UnsafeMutablePointer<String>) {
18
18
sink ( arg: ptr. pointee)
19
19
sink ( arg: ptr)
20
20
21
- ptr. pointee = sourceString ( )
21
+ ptr. pointee = sourceString ( " taintPointer " )
22
22
23
- sink ( arg: ptr. pointee) // $ tainted=21
23
+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
24
24
sink ( arg: ptr)
25
25
}
26
26
27
27
func clearPointer2( ptr: UnsafeMutablePointer < String > ) {
28
- sink ( arg: ptr. pointee) // $ tainted=21
28
+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
29
29
sink ( arg: ptr)
30
30
31
31
ptr. pointee = " abc "
@@ -42,12 +42,12 @@ func testMutatingPointerInCall(ptr: UnsafeMutablePointer<String>) {
42
42
43
43
taintPointer ( ptr: ptr) // mutates `ptr` pointee with a tainted value
44
44
45
- sink ( arg: ptr. pointee) // $ tainted=21
45
+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
46
46
sink ( arg: ptr)
47
47
48
48
clearPointer2 ( ptr: ptr)
49
49
50
- sink ( arg: ptr. pointee) // $ SPURIOUS: tainted=21
50
+ sink ( arg: ptr. pointee) // $ SPURIOUS: tainted=taintPointer
51
51
sink ( arg: ptr)
52
52
}
53
53
@@ -57,10 +57,10 @@ func taintBuffer(buffer: UnsafeMutableBufferPointer<UInt8>) {
57
57
sink ( arg: buffer [ 0 ] )
58
58
sink ( arg: buffer)
59
59
60
- buffer [ 0 ] = sourceUInt8 ( )
60
+ buffer [ 0 ] = sourceUInt8 ( " taintBuffer " )
61
61
62
- sink ( arg: buffer [ 0 ] ) // $ tainted=60
63
- sink ( arg: buffer) // $ tainted=60
62
+ sink ( arg: buffer [ 0 ] ) // $ tainted=taintBuffer
63
+ sink ( arg: buffer) // $ tainted=taintBuffer
64
64
}
65
65
66
66
func testMutatingBufferInCall( ptr: UnsafeMutablePointer < UInt8 > ) {
@@ -71,8 +71,8 @@ func testMutatingBufferInCall(ptr: UnsafeMutablePointer<UInt8>) {
71
71
72
72
taintBuffer ( buffer: buffer) // mutates `buffer` contents with a tainted value
73
73
74
- sink ( arg: buffer [ 0 ] ) // $ tainted=60
75
- sink ( arg: buffer) // $ tainted=60
74
+ sink ( arg: buffer [ 0 ] ) // $ tainted=taintBuffer
75
+ sink ( arg: buffer) // $ tainted=taintBuffer
76
76
77
77
}
78
78
@@ -84,9 +84,9 @@ func taintMyPointer(ptr: MyPointer) {
84
84
sink ( arg: ptr. pointee)
85
85
sink ( arg: ptr)
86
86
87
- ptr. pointee = sourceString ( )
87
+ ptr. pointee = sourceString ( " taintMyPointer " )
88
88
89
- sink ( arg: ptr. pointee) // $ tainted=87
89
+ sink ( arg: ptr. pointee) // $ tainted=taintMyPointer
90
90
sink ( arg: ptr)
91
91
}
92
92
@@ -96,7 +96,7 @@ func testMutatingMyPointerInCall(ptr: MyPointer) {
96
96
97
97
taintMyPointer ( ptr: ptr) // mutates `ptr` pointee with a tainted value
98
98
99
- sink ( arg: ptr. pointee) // $ MISSING: tainted=87
99
+ sink ( arg: ptr. pointee) // $ MISSING: tainted=taintMyPointer
100
100
sink ( arg: ptr)
101
101
}
102
102
@@ -111,19 +111,19 @@ struct MyGenericPointerContainer<T> {
111
111
}
112
112
113
113
func writePointerContainer( mpc: MyPointerContainer ) {
114
- mpc. ptr. pointee = sourceString ( )
115
- sink ( arg: mpc. ptr. pointee) // $ tainted=114
114
+ mpc. ptr. pointee = sourceString ( " writePointerContainer " )
115
+ sink ( arg: mpc. ptr. pointee) // $ tainted=writePointerContainer
116
116
}
117
117
118
118
func writeGenericPointerContainer< T> ( mgpc: MyGenericPointerContainer < T > ) {
119
- mgpc. ptr. pointee = sourceString ( ) as! T
120
- sink ( arg: mgpc. ptr. pointee) // $ tainted=119
119
+ mgpc. ptr. pointee = sourceString ( " writeGenericPointerContainer " ) as! T
120
+ sink ( arg: mgpc. ptr. pointee) // $ tainted=writeGenericPointerContainer
121
121
}
122
122
123
123
func testWritingPointerContainersInCalls( mpc: MyPointerContainer , mgpc: MyGenericPointerContainer < Int > ) {
124
124
writePointerContainer ( mpc: mpc)
125
- sink ( arg: mpc. ptr. pointee) // $ tainted=114
125
+ sink ( arg: mpc. ptr. pointee) // $ tainted=writePointerContainer
126
126
127
127
writeGenericPointerContainer ( mgpc: mgpc)
128
- sink ( arg: mgpc. ptr. pointee) // $ tainted=119
128
+ sink ( arg: mgpc. ptr. pointee) // $ tainted=writeGenericPointerContainer
129
129
}
0 commit comments