File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
swift/ql/test/library-tests/dataflow/taint Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ | data.swift:12:6:12:6 | WriteDef | data.swift:16:12:16:12 | dataClean |
2
+ | data.swift:12:18:12:36 | call to ... | data.swift:12:6:12:6 | WriteDef |
3
+ | data.swift:13:6:13:6 | WriteDef | data.swift:14:26:14:26 | dataTainted |
4
+ | data.swift:13:20:13:38 | call to ... | data.swift:13:6:13:6 | WriteDef |
5
+ | data.swift:14:6:14:6 | WriteDef | data.swift:18:12:18:12 | dataTainted2 |
6
+ | data.swift:14:21:14:37 | call to ... | data.swift:14:6:14:6 | WriteDef |
7
+ | data.swift:14:26:14:26 | dataTainted | data.swift:17:12:17:12 | dataTainted |
8
+ | data.swift:16:12:16:12 | dataClean | data.swift:20:33:20:33 | dataClean |
1
9
| file://:0:0:0:0 | Phi | string.swift:7:14:7:14 | $interpolation |
2
10
| file://:0:0:0:0 | Phi | string.swift:9:14:9:14 | $interpolation |
3
11
| file://:0:0:0:0 | Phi | string.swift:11:14:11:14 | $interpolation |
Original file line number Diff line number Diff line change
1
+
2
+ class Data
3
+ {
4
+ init < S> ( _ elements: S ) { }
5
+ }
6
+
7
+ func source( ) -> String { return " " }
8
+ func sink( arg: Data ) { }
9
+ func sink2( arg: String ) { }
10
+
11
+ func taintThroughData( ) {
12
+ let dataClean = Data ( " 123456 " . utf8)
13
+ let dataTainted = Data ( source ( ) . utf8)
14
+ let dataTainted2 = Data ( dataTainted)
15
+
16
+ sink ( arg: dataClean)
17
+ sink ( arg: dataTainted) // tainted [NOT DETECTED]
18
+ sink ( arg: dataTainted2) // tainted [NOT DETECTED]
19
+
20
+ let stringClean = String ( data: dataClean, encoding: String . Encoding. utf8)
21
+ let stringTainted = String ( data: dataTainted, encoding: String . Encoding. utf8)
22
+
23
+ sink2 ( arg: stringClean!) // tainted [NOT DETECTED]
24
+ sink2 ( arg: stringTainted!) // tainted [NOT DETECTED]
25
+ }
You can’t perform that action at this time.
0 commit comments