Skip to content

Commit 68f2501

Browse files
authored
Merge pull request github#14496 from geoffw0/memberinittest
Swift: Add data flow tests for member initialization.
2 parents 0ad338f + 5ffb773 commit 68f2501

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

swift/ql/test/library-tests/dataflow/taint/core/LocalTaint.expected

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,55 @@
354354
| simple.swift:85:13:85:20 | call to source() | simple.swift:85:13:85:26 | ... .&>>(_:_:) ... |
355355
| simple.swift:85:26:85:26 | 1 | simple.swift:85:13:85:26 | ... .&>>(_:_:) ... |
356356
| simple.swift:87:14:87:21 | call to source() | simple.swift:87:13:87:21 | call to ~(_:) |
357+
| simple.swift:97:7:97:7 | SSA def(self) | simple.swift:97:7:97:7 | self[return] |
358+
| simple.swift:97:7:97:7 | SSA def(self) | simple.swift:97:7:97:7 | self[return] |
359+
| simple.swift:97:7:97:7 | self | simple.swift:97:7:97:7 | SSA def(self) |
360+
| simple.swift:97:7:97:7 | self | simple.swift:97:7:97:7 | SSA def(self) |
361+
| simple.swift:98:6:98:6 | self | simple.swift:98:6:98:6 | SSA def(self) |
362+
| simple.swift:99:6:99:6 | self | simple.swift:99:6:99:6 | SSA def(self) |
363+
| simple.swift:100:6:100:6 | self | simple.swift:100:6:100:6 | SSA def(self) |
364+
| simple.swift:101:6:101:6 | self | simple.swift:101:6:101:6 | SSA def(self) |
365+
| simple.swift:101:6:101:6 | self | simple.swift:101:6:101:6 | SSA def(self) |
366+
| simple.swift:101:6:101:6 | self | simple.swift:101:6:101:6 | SSA def(self) |
367+
| simple.swift:101:6:101:6 | value | simple.swift:101:6:101:6 | SSA def(value) |
368+
| simple.swift:103:13:103:13 | self | simple.swift:103:13:103:13 | SSA def(self) |
369+
| simple.swift:104:13:104:13 | self | simple.swift:104:13:104:13 | SSA def(self) |
370+
| simple.swift:105:13:105:13 | self | simple.swift:105:13:105:13 | SSA def(self) |
371+
| simple.swift:106:13:106:13 | self | simple.swift:106:13:106:13 | SSA def(self) |
372+
| simple.swift:106:13:106:13 | self | simple.swift:106:13:106:13 | SSA def(self) |
373+
| simple.swift:106:13:106:13 | self | simple.swift:106:13:106:13 | SSA def(self) |
374+
| simple.swift:106:13:106:13 | value | simple.swift:106:13:106:13 | SSA def(value) |
375+
| simple.swift:108:7:108:7 | SSA def(self) | simple.swift:116:13:116:13 | self |
376+
| simple.swift:108:7:108:7 | self | simple.swift:108:7:108:7 | SSA def(self) |
377+
| simple.swift:113:3:113:8 | SSA def(gv) | simple.swift:114:13:114:13 | gv |
378+
| simple.swift:113:8:113:8 | 0 | simple.swift:113:3:113:8 | SSA def(gv) |
379+
| simple.swift:116:13:116:13 | [post] self | simple.swift:117:13:117:13 | self |
380+
| simple.swift:116:13:116:13 | self | simple.swift:117:13:117:13 | self |
381+
| simple.swift:117:13:117:13 | [post] self | simple.swift:118:13:118:13 | self |
382+
| simple.swift:117:13:117:13 | self | simple.swift:118:13:118:13 | self |
383+
| simple.swift:118:13:118:13 | [post] self | simple.swift:119:13:119:13 | self |
384+
| simple.swift:118:13:118:13 | self | simple.swift:119:13:119:13 | self |
385+
| simple.swift:119:13:119:13 | [post] self | simple.swift:120:3:120:3 | self |
386+
| simple.swift:119:13:119:13 | self | simple.swift:120:3:120:3 | self |
387+
| simple.swift:120:3:120:3 | [post] self | simple.swift:121:13:121:13 | self |
388+
| simple.swift:120:3:120:3 | self | simple.swift:121:13:121:13 | self |
389+
| simple.swift:121:13:121:13 | [post] self | simple.swift:108:2:129:2 | self[return] |
390+
| simple.swift:121:13:121:13 | self | simple.swift:108:2:129:2 | self[return] |
391+
| simple.swift:133:7:133:7 | SSA def(mc) | simple.swift:135:3:135:3 | mc |
392+
| simple.swift:133:7:133:7 | mc | simple.swift:133:7:133:7 | SSA def(mc) |
393+
| simple.swift:133:12:133:20 | call to MyClass.init() | simple.swift:133:7:133:7 | mc |
394+
| simple.swift:135:3:135:3 | [post] mc | simple.swift:138:13:138:13 | mc |
395+
| simple.swift:135:3:135:3 | mc | simple.swift:138:13:138:13 | mc |
396+
| simple.swift:142:7:142:7 | SSA def(self) | simple.swift:142:7:142:7 | self[return] |
397+
| simple.swift:142:7:142:7 | SSA def(self) | simple.swift:142:7:142:7 | self[return] |
398+
| simple.swift:142:7:142:7 | self | simple.swift:142:7:142:7 | SSA def(self) |
399+
| simple.swift:142:7:142:7 | self | simple.swift:142:7:142:7 | SSA def(self) |
400+
| simple.swift:143:6:143:6 | self | simple.swift:143:6:143:6 | SSA def(self) |
401+
| simple.swift:144:13:144:13 | self | simple.swift:144:13:144:13 | SSA def(self) |
402+
| simple.swift:146:7:146:7 | SSA def(self) | simple.swift:148:13:148:13 | self |
403+
| simple.swift:146:7:146:7 | self | simple.swift:146:7:146:7 | SSA def(self) |
404+
| simple.swift:148:13:148:13 | [post] self | simple.swift:146:2:150:3 | self[return] |
405+
| simple.swift:148:13:148:13 | self | simple.swift:146:2:150:3 | self[return] |
357406
| stringinterpolation.swift:5:7:5:7 | SSA def(self) | stringinterpolation.swift:5:7:5:7 | self[return] |
358407
| stringinterpolation.swift:5:7:5:7 | SSA def(self) | stringinterpolation.swift:5:7:5:7 | self[return] |
359408
| stringinterpolation.swift:5:7:5:7 | self | stringinterpolation.swift:5:7:5:7 | SSA def(self) |

swift/ql/test/library-tests/dataflow/taint/core/simple.swift

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,68 @@ func taintThroughBitwiseOperators() {
8686

8787
sink(arg: ~source()) // $ tainted=87
8888
}
89+
90+
// --- globals and class member variables ---
91+
92+
let g1 = source()
93+
let g2 = source() + 1
94+
let g3 = g1
95+
var gv = source()
96+
97+
class MyClass {
98+
let m1 = source()
99+
let m2 = source() + 1
100+
let m3 = g1
101+
var mv = source()
102+
103+
static let s1 = source()
104+
static let s2 = source() + 1
105+
static let s3 = s1
106+
static var sv = source()
107+
108+
func test() {
109+
sink(arg: g1) // $ MISSING: tainted=92
110+
sink(arg: g2) // $ MISSING: tainted=93
111+
sink(arg: g3) // $ MISSING: tainted=94
112+
sink(arg: gv)
113+
gv = 0
114+
sink(arg: gv)
115+
116+
sink(arg: m1) // $ MISSING: tainted=98
117+
sink(arg: m2) // $ MISSING: tainted=99
118+
sink(arg: m3) // $ MISSING: tainted=100
119+
sink(arg: mv)
120+
mv = 0
121+
sink(arg: mv)
122+
123+
sink(arg: MyClass.s1) // $ MISSING: tainted=103
124+
sink(arg: MyClass.s2) // $ MISSING: tainted=104
125+
sink(arg: MyClass.s3) // $ MISSING: tainted=105
126+
sink(arg: MyClass.sv)
127+
MyClass.sv = 0
128+
sink(arg: MyClass.sv)
129+
}
130+
}
131+
132+
func test_instantiate_MyClass() {
133+
let mc = MyClass()
134+
135+
mc.test()
136+
137+
sink(arg: g1) // $ MISSING: tainted=92
138+
sink(arg: mc.m1) // $ MISSING: tainted=98
139+
sink(arg: MyClass.s1) // $ MISSING: tainted=103
140+
}
141+
142+
class MyClass2_NeverInstantiated {
143+
let m1 = source()
144+
static let s1 = source()
145+
146+
func test() {
147+
sink(arg: g1) // $ MISSING: tainted=92
148+
sink(arg: m1) // $ MISSING: tainted=143
149+
sink(arg: MyClass2_NeverInstantiated.s1) // $ MISSING: tainted=144
150+
}
151+
}
152+
153+
// ---

0 commit comments

Comments
 (0)