Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f768abb

Browse files
committed
C#: Add data flow test with CFG splitting
1 parent abb3f71 commit f768abb

17 files changed

Lines changed: 588 additions & 324 deletions
Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,39 @@
1-
| access to field SinkField0 |
2-
| access to local variable sink0 |
3-
| access to local variable sink1 |
4-
| access to local variable sink10 |
5-
| access to local variable sink11 |
6-
| access to local variable sink19 |
7-
| access to local variable sink2 |
8-
| access to local variable sink20 |
9-
| access to local variable sink23 |
10-
| access to local variable sink27 |
11-
| access to local variable sink28 |
12-
| access to local variable sink29 |
13-
| access to local variable sink3 |
14-
| access to local variable sink30 |
15-
| access to local variable sink31 |
16-
| access to local variable sink32 |
17-
| access to local variable sink33 |
18-
| access to local variable sink34 |
19-
| access to local variable sink35 |
20-
| access to local variable sink36 |
21-
| access to local variable sink37 |
22-
| access to local variable sink38 |
23-
| access to local variable sink4 |
24-
| access to local variable sink5 |
25-
| access to local variable sink6 |
26-
| access to local variable sink7 |
27-
| access to local variable sink8 |
28-
| access to local variable sink9 |
29-
| access to parameter sinkParam0 |
30-
| access to parameter sinkParam1 |
31-
| access to parameter sinkParam2 |
32-
| access to parameter sinkParam3 |
33-
| access to parameter sinkParam4 |
34-
| access to parameter sinkParam5 |
35-
| access to parameter sinkParam6 |
36-
| access to parameter sinkParam7 |
37-
| access to property SinkProperty0 |
1+
| Capture.cs:12:19:12:24 | access to local variable sink27 |
2+
| Capture.cs:21:23:21:28 | access to local variable sink28 |
3+
| Capture.cs:30:19:30:24 | access to local variable sink29 |
4+
| Capture.cs:60:15:60:20 | access to local variable sink30 |
5+
| Capture.cs:72:15:72:20 | access to local variable sink31 |
6+
| Capture.cs:81:15:81:20 | access to local variable sink32 |
7+
| Capture.cs:109:15:109:20 | access to local variable sink33 |
8+
| Capture.cs:121:15:121:20 | access to local variable sink34 |
9+
| Capture.cs:130:15:130:20 | access to local variable sink35 |
10+
| Capture.cs:137:15:137:20 | access to local variable sink36 |
11+
| Capture.cs:145:15:145:20 | access to local variable sink37 |
12+
| Capture.cs:171:15:171:20 | access to local variable sink38 |
13+
| GlobalDataFlow.cs:18:15:18:29 | access to field SinkField0 |
14+
| GlobalDataFlow.cs:26:15:26:32 | access to property SinkProperty0 |
15+
| GlobalDataFlow.cs:44:50:44:59 | access to parameter sinkParam2 |
16+
| GlobalDataFlow.cs:71:15:71:19 | access to local variable sink0 |
17+
| GlobalDataFlow.cs:73:15:73:19 | access to local variable sink1 |
18+
| GlobalDataFlow.cs:76:15:76:19 | access to local variable sink2 |
19+
| GlobalDataFlow.cs:79:15:79:19 | access to local variable sink3 |
20+
| GlobalDataFlow.cs:132:15:132:19 | access to local variable sink4 |
21+
| GlobalDataFlow.cs:140:15:140:19 | access to local variable sink5 |
22+
| GlobalDataFlow.cs:150:15:150:19 | access to local variable sink6 |
23+
| GlobalDataFlow.cs:153:15:153:19 | access to local variable sink7 |
24+
| GlobalDataFlow.cs:156:15:156:19 | access to local variable sink8 |
25+
| GlobalDataFlow.cs:160:15:160:20 | access to local variable sink23 |
26+
| GlobalDataFlow.cs:177:15:177:19 | access to local variable sink9 |
27+
| GlobalDataFlow.cs:186:15:186:20 | access to local variable sink10 |
28+
| GlobalDataFlow.cs:194:15:194:20 | access to local variable sink19 |
29+
| GlobalDataFlow.cs:233:15:233:24 | access to parameter sinkParam0 |
30+
| GlobalDataFlow.cs:238:15:238:24 | access to parameter sinkParam1 |
31+
| GlobalDataFlow.cs:243:15:243:24 | access to parameter sinkParam3 |
32+
| GlobalDataFlow.cs:248:15:248:24 | access to parameter sinkParam4 |
33+
| GlobalDataFlow.cs:253:15:253:24 | access to parameter sinkParam5 |
34+
| GlobalDataFlow.cs:258:15:258:24 | access to parameter sinkParam6 |
35+
| GlobalDataFlow.cs:263:15:263:24 | access to parameter sinkParam7 |
36+
| GlobalDataFlow.cs:376:15:376:20 | access to local variable sink11 |
37+
| GlobalDataFlow.cs:399:41:399:46 | access to local variable sink20 |
38+
| Splitting.cs:9:15:9:15 | access to local variable x |
39+
| Splitting.cs:11:19:11:19 | access to local variable x |
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import csharp
22
import Common
33

4-
from Config c, DataFlow::Node source, DataFlow::Node sink, string s
5-
where
6-
c.hasFlow(source, sink) and
7-
s = sink.toString()
8-
select s order by s
4+
from Config c, DataFlow::Node source, DataFlow::Node sink
5+
where c.hasFlow(source, sink)
6+
select sink

csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected

Lines changed: 49 additions & 38 deletions
Large diffs are not rendered by default.

csharp/ql/test/library-tests/dataflow/global/DataFlowPath.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ from Config c, DataFlow::PathNode source, DataFlow::PathNode sink, string s
1010
where
1111
c.hasFlowPath(source, sink) and
1212
s = sink.toString()
13-
select sink, s, source, sink order by s
13+
select sink, source, sink, s order by s
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Splitting
2+
{
3+
void M1(bool b, string tainted)
4+
{
5+
if (b)
6+
if (tainted == null)
7+
return;
8+
var x = Return(tainted);
9+
Check(x);
10+
if (b)
11+
Check(x);
12+
}
13+
14+
static void Check<T>(T x) { }
15+
16+
static T Return<T>(T x) => x;
17+
}
Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,55 @@
1-
| access to field SinkField0 |
2-
| access to local variable sink0 |
3-
| access to local variable sink1 |
4-
| access to local variable sink10 |
5-
| access to local variable sink11 |
6-
| access to local variable sink12 |
7-
| access to local variable sink13 |
8-
| access to local variable sink14 |
9-
| access to local variable sink15 |
10-
| access to local variable sink16 |
11-
| access to local variable sink17 |
12-
| access to local variable sink18 |
13-
| access to local variable sink19 |
14-
| access to local variable sink2 |
15-
| access to local variable sink20 |
16-
| access to local variable sink21 |
17-
| access to local variable sink22 |
18-
| access to local variable sink23 |
19-
| access to local variable sink24 |
20-
| access to local variable sink25 |
21-
| access to local variable sink26 |
22-
| access to local variable sink27 |
23-
| access to local variable sink28 |
24-
| access to local variable sink29 |
25-
| access to local variable sink3 |
26-
| access to local variable sink30 |
27-
| access to local variable sink31 |
28-
| access to local variable sink32 |
29-
| access to local variable sink33 |
30-
| access to local variable sink34 |
31-
| access to local variable sink35 |
32-
| access to local variable sink36 |
33-
| access to local variable sink37 |
34-
| access to local variable sink38 |
35-
| access to local variable sink4 |
36-
| access to local variable sink5 |
37-
| access to local variable sink6 |
38-
| access to local variable sink7 |
39-
| access to local variable sink8 |
40-
| access to local variable sink9 |
41-
| access to parameter sinkParam0 |
42-
| access to parameter sinkParam1 |
43-
| access to parameter sinkParam10 |
44-
| access to parameter sinkParam11 |
45-
| access to parameter sinkParam2 |
46-
| access to parameter sinkParam3 |
47-
| access to parameter sinkParam4 |
48-
| access to parameter sinkParam5 |
49-
| access to parameter sinkParam6 |
50-
| access to parameter sinkParam7 |
51-
| access to parameter sinkParam8 |
52-
| access to parameter sinkParam9 |
53-
| access to property SinkProperty0 |
1+
| Capture.cs:12:19:12:24 | access to local variable sink27 |
2+
| Capture.cs:21:23:21:28 | access to local variable sink28 |
3+
| Capture.cs:30:19:30:24 | access to local variable sink29 |
4+
| Capture.cs:60:15:60:20 | access to local variable sink30 |
5+
| Capture.cs:72:15:72:20 | access to local variable sink31 |
6+
| Capture.cs:81:15:81:20 | access to local variable sink32 |
7+
| Capture.cs:109:15:109:20 | access to local variable sink33 |
8+
| Capture.cs:121:15:121:20 | access to local variable sink34 |
9+
| Capture.cs:130:15:130:20 | access to local variable sink35 |
10+
| Capture.cs:137:15:137:20 | access to local variable sink36 |
11+
| Capture.cs:145:15:145:20 | access to local variable sink37 |
12+
| Capture.cs:171:15:171:20 | access to local variable sink38 |
13+
| GlobalDataFlow.cs:18:15:18:29 | access to field SinkField0 |
14+
| GlobalDataFlow.cs:26:15:26:32 | access to property SinkProperty0 |
15+
| GlobalDataFlow.cs:44:50:44:59 | access to parameter sinkParam2 |
16+
| GlobalDataFlow.cs:71:15:71:19 | access to local variable sink0 |
17+
| GlobalDataFlow.cs:73:15:73:19 | access to local variable sink1 |
18+
| GlobalDataFlow.cs:76:15:76:19 | access to local variable sink2 |
19+
| GlobalDataFlow.cs:79:15:79:19 | access to local variable sink3 |
20+
| GlobalDataFlow.cs:81:15:81:20 | access to local variable sink13 |
21+
| GlobalDataFlow.cs:83:15:83:20 | access to local variable sink14 |
22+
| GlobalDataFlow.cs:85:15:85:20 | access to local variable sink15 |
23+
| GlobalDataFlow.cs:87:15:87:20 | access to local variable sink16 |
24+
| GlobalDataFlow.cs:89:15:89:20 | access to local variable sink17 |
25+
| GlobalDataFlow.cs:91:15:91:20 | access to local variable sink18 |
26+
| GlobalDataFlow.cs:94:15:94:20 | access to local variable sink21 |
27+
| GlobalDataFlow.cs:97:15:97:20 | access to local variable sink22 |
28+
| GlobalDataFlow.cs:132:15:132:19 | access to local variable sink4 |
29+
| GlobalDataFlow.cs:140:15:140:19 | access to local variable sink5 |
30+
| GlobalDataFlow.cs:150:15:150:19 | access to local variable sink6 |
31+
| GlobalDataFlow.cs:153:15:153:19 | access to local variable sink7 |
32+
| GlobalDataFlow.cs:156:15:156:19 | access to local variable sink8 |
33+
| GlobalDataFlow.cs:158:15:158:20 | access to local variable sink12 |
34+
| GlobalDataFlow.cs:160:15:160:20 | access to local variable sink23 |
35+
| GlobalDataFlow.cs:177:15:177:19 | access to local variable sink9 |
36+
| GlobalDataFlow.cs:186:15:186:20 | access to local variable sink10 |
37+
| GlobalDataFlow.cs:194:15:194:20 | access to local variable sink19 |
38+
| GlobalDataFlow.cs:204:58:204:68 | access to parameter sinkParam10 |
39+
| GlobalDataFlow.cs:207:15:207:20 | access to local variable sink24 |
40+
| GlobalDataFlow.cs:209:15:209:20 | access to local variable sink25 |
41+
| GlobalDataFlow.cs:211:15:211:20 | access to local variable sink26 |
42+
| GlobalDataFlow.cs:233:15:233:24 | access to parameter sinkParam0 |
43+
| GlobalDataFlow.cs:238:15:238:24 | access to parameter sinkParam1 |
44+
| GlobalDataFlow.cs:243:15:243:24 | access to parameter sinkParam3 |
45+
| GlobalDataFlow.cs:248:15:248:24 | access to parameter sinkParam4 |
46+
| GlobalDataFlow.cs:253:15:253:24 | access to parameter sinkParam5 |
47+
| GlobalDataFlow.cs:258:15:258:24 | access to parameter sinkParam6 |
48+
| GlobalDataFlow.cs:263:15:263:24 | access to parameter sinkParam7 |
49+
| GlobalDataFlow.cs:289:15:289:24 | access to parameter sinkParam8 |
50+
| GlobalDataFlow.cs:295:15:295:24 | access to parameter sinkParam9 |
51+
| GlobalDataFlow.cs:301:15:301:25 | access to parameter sinkParam11 |
52+
| GlobalDataFlow.cs:376:15:376:20 | access to local variable sink11 |
53+
| GlobalDataFlow.cs:399:41:399:46 | access to local variable sink20 |
54+
| Splitting.cs:9:15:9:15 | access to local variable x |
55+
| Splitting.cs:11:19:11:19 | access to local variable x |

csharp/ql/test/library-tests/dataflow/global/TaintTracking.ql

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ class TTConfig extends TaintTracking::Configuration {
1111
override predicate isSink(DataFlow::Node sink) { c.isSink(sink) }
1212
}
1313

14-
from TTConfig c, DataFlow::Node source, DataFlow::Node sink, string s
15-
where
16-
c.hasFlow(source, sink) and
17-
s = sink.toString()
18-
select s order by s
14+
from TTConfig c, DataFlow::Node source, DataFlow::Node sink
15+
where c.hasFlow(source, sink)
16+
select sink

0 commit comments

Comments
 (0)