11
22// --- stubs ---
33
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 }
66func sink( arg: Any ) { }
77
88// --- tests ---
@@ -18,14 +18,14 @@ func taintPointer(ptr: UnsafeMutablePointer<String>) {
1818 sink ( arg: ptr. pointee)
1919 sink ( arg: ptr)
2020
21- ptr. pointee = sourceString ( )
21+ ptr. pointee = sourceString ( " taintPointer " )
2222
23- sink ( arg: ptr. pointee) // $ tainted=21
23+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
2424 sink ( arg: ptr)
2525}
2626
2727func clearPointer2( ptr: UnsafeMutablePointer < String > ) {
28- sink ( arg: ptr. pointee) // $ tainted=21
28+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
2929 sink ( arg: ptr)
3030
3131 ptr. pointee = " abc "
@@ -42,12 +42,12 @@ func testMutatingPointerInCall(ptr: UnsafeMutablePointer<String>) {
4242
4343 taintPointer ( ptr: ptr) // mutates `ptr` pointee with a tainted value
4444
45- sink ( arg: ptr. pointee) // $ tainted=21
45+ sink ( arg: ptr. pointee) // $ tainted=taintPointer
4646 sink ( arg: ptr)
4747
4848 clearPointer2 ( ptr: ptr)
4949
50- sink ( arg: ptr. pointee) // $ SPURIOUS: tainted=21
50+ sink ( arg: ptr. pointee) // $ SPURIOUS: tainted=taintPointer
5151 sink ( arg: ptr)
5252}
5353
@@ -57,10 +57,10 @@ func taintBuffer(buffer: UnsafeMutableBufferPointer<UInt8>) {
5757 sink ( arg: buffer [ 0 ] )
5858 sink ( arg: buffer)
5959
60- buffer [ 0 ] = sourceUInt8 ( )
60+ buffer [ 0 ] = sourceUInt8 ( " taintBuffer " )
6161
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
6464}
6565
6666func testMutatingBufferInCall( ptr: UnsafeMutablePointer < UInt8 > ) {
@@ -71,8 +71,8 @@ func testMutatingBufferInCall(ptr: UnsafeMutablePointer<UInt8>) {
7171
7272 taintBuffer ( buffer: buffer) // mutates `buffer` contents with a tainted value
7373
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
7676
7777}
7878
@@ -84,9 +84,9 @@ func taintMyPointer(ptr: MyPointer) {
8484 sink ( arg: ptr. pointee)
8585 sink ( arg: ptr)
8686
87- ptr. pointee = sourceString ( )
87+ ptr. pointee = sourceString ( " taintMyPointer " )
8888
89- sink ( arg: ptr. pointee) // $ tainted=87
89+ sink ( arg: ptr. pointee) // $ tainted=taintMyPointer
9090 sink ( arg: ptr)
9191}
9292
@@ -96,7 +96,7 @@ func testMutatingMyPointerInCall(ptr: MyPointer) {
9696
9797 taintMyPointer ( ptr: ptr) // mutates `ptr` pointee with a tainted value
9898
99- sink ( arg: ptr. pointee) // $ MISSING: tainted=87
99+ sink ( arg: ptr. pointee) // $ MISSING: tainted=taintMyPointer
100100 sink ( arg: ptr)
101101}
102102
@@ -111,19 +111,19 @@ struct MyGenericPointerContainer<T> {
111111}
112112
113113func 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
116116}
117117
118118func 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
121121}
122122
123123func testWritingPointerContainersInCalls( mpc: MyPointerContainer , mgpc: MyGenericPointerContainer < Int > ) {
124124 writePointerContainer ( mpc: mpc)
125- sink ( arg: mpc. ptr. pointee) // $ tainted=114
125+ sink ( arg: mpc. ptr. pointee) // $ tainted=writePointerContainer
126126
127127 writeGenericPointerContainer ( mgpc: mgpc)
128- sink ( arg: mgpc. ptr. pointee) // $ tainted=119
128+ sink ( arg: mgpc. ptr. pointee) // $ tainted=writeGenericPointerContainer
129129}
0 commit comments