Skip to content

Commit 0f5dd5d

Browse files
criemenaschackmull
authored andcommitted
Add one more test with a more complicated guard.
1 parent 393fb02 commit 0f5dd5d

File tree

2 files changed

+77
-42
lines changed

2 files changed

+77
-42
lines changed

java/ql/test/library-tests/dataflow/call-sensitivity/A.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ public void localCallSensitivity(Object o, boolean c) {
3232
sink(o3);
3333
}
3434

35+
public void localCallSensitivity2(Object o, boolean b, boolean c) {
36+
Object o1 = o;
37+
Object o2 = null;
38+
if (b || c) {
39+
Object tmp = o1;
40+
o2 = 1 == 1 ? (tmp) : (tmp);
41+
}
42+
Object o3 = o2;
43+
sink(o3);
44+
}
45+
3546
public void f1() {
3647
// should not exhibit flow
3748
callSinkIfTrue(new Integer(1), false);
@@ -43,6 +54,11 @@ public void f1() {
4354
callSinkIfFalse(new Integer(2), false);
4455
callSinkFromLoop(new Integer(3), true);
4556
localCallSensitivity(new Integer(4), true);
57+
localCallSensitivity2(new Integer(4), true, true);
58+
localCallSensitivity2(new Integer(4), false, true);
59+
localCallSensitivity2(new Integer(4), true, false);
60+
// expected false positive
61+
localCallSensitivity2(new Integer(4), false, false);
4662
}
4763

4864
public void f2() {

java/ql/test/library-tests/dataflow/call-sensitivity/flow.expected

Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,27 @@ edges
33
| A.java:12:30:12:37 | o [ : Number] | A.java:14:9:14:9 | o |
44
| A.java:18:31:18:38 | o [ : Number] | A.java:20:9:20:9 | o |
55
| A.java:24:35:24:42 | o [ : Number] | A.java:32:8:32:9 | o3 |
6-
| A.java:42:18:42:31 | new Integer(...) [ : Number] | A.java:6:29:6:36 | o [ : Number] |
7-
| A.java:43:19:43:32 | new Integer(...) [ : Number] | A.java:12:30:12:37 | o [ : Number] |
8-
| A.java:44:20:44:33 | new Integer(...) [ : Number] | A.java:18:31:18:38 | o [ : Number] |
9-
| A.java:45:24:45:37 | new Integer(...) [ : Number] | A.java:24:35:24:42 | o [ : Number] |
10-
| A.java:57:18:57:31 | new Integer(...) [ : Number] | A.java:6:29:6:36 | o [ : Number] |
11-
| A.java:58:19:58:32 | new Integer(...) [ : Number] | A.java:12:30:12:37 | o [ : Number] |
12-
| A.java:59:20:59:33 | new Integer(...) [ : Number] | A.java:18:31:18:38 | o [ : Number] |
13-
| A.java:60:24:60:37 | new Integer(...) [ : Number] | A.java:24:35:24:42 | o [ : Number] |
14-
| A.java:71:20:71:33 | new Integer(...) [ : Number] | A.java:78:30:78:37 | o [ : Number] |
15-
| A.java:72:21:72:34 | new Integer(...) [ : Number] | A.java:85:31:85:38 | o [ : Number] |
16-
| A.java:73:26:73:39 | new Integer(...) [ : Number] | A.java:92:36:92:43 | o [ : Number] |
17-
| A.java:78:30:78:37 | o [ : Number] | A.java:80:10:80:10 | o |
18-
| A.java:85:31:85:38 | o [ : Number] | A.java:87:10:87:10 | o |
19-
| A.java:92:36:92:43 | o [ : Number] | A.java:100:9:100:10 | o3 |
6+
| A.java:35:36:35:43 | o [ : Number] | A.java:43:8:43:9 | o3 |
7+
| A.java:35:36:35:43 | o [ : Number] | A.java:43:8:43:9 | o3 |
8+
| A.java:35:36:35:43 | o [ : Number] | A.java:43:8:43:9 | o3 |
9+
| A.java:53:18:53:31 | new Integer(...) [ : Number] | A.java:6:29:6:36 | o [ : Number] |
10+
| A.java:54:19:54:32 | new Integer(...) [ : Number] | A.java:12:30:12:37 | o [ : Number] |
11+
| A.java:55:20:55:33 | new Integer(...) [ : Number] | A.java:18:31:18:38 | o [ : Number] |
12+
| A.java:56:24:56:37 | new Integer(...) [ : Number] | A.java:24:35:24:42 | o [ : Number] |
13+
| A.java:57:25:57:38 | new Integer(...) [ : Number] | A.java:35:36:35:43 | o [ : Number] |
14+
| A.java:58:25:58:38 | new Integer(...) [ : Number] | A.java:35:36:35:43 | o [ : Number] |
15+
| A.java:59:25:59:38 | new Integer(...) [ : Number] | A.java:35:36:35:43 | o [ : Number] |
16+
| A.java:61:25:61:38 | new Integer(...) [ : Number] | A.java:35:36:35:43 | o [ : Number] |
17+
| A.java:73:18:73:31 | new Integer(...) [ : Number] | A.java:6:29:6:36 | o [ : Number] |
18+
| A.java:74:19:74:32 | new Integer(...) [ : Number] | A.java:12:30:12:37 | o [ : Number] |
19+
| A.java:75:20:75:33 | new Integer(...) [ : Number] | A.java:18:31:18:38 | o [ : Number] |
20+
| A.java:76:24:76:37 | new Integer(...) [ : Number] | A.java:24:35:24:42 | o [ : Number] |
21+
| A.java:87:20:87:33 | new Integer(...) [ : Number] | A.java:94:30:94:37 | o [ : Number] |
22+
| A.java:88:21:88:34 | new Integer(...) [ : Number] | A.java:101:31:101:38 | o [ : Number] |
23+
| A.java:89:26:89:39 | new Integer(...) [ : Number] | A.java:108:36:108:43 | o [ : Number] |
24+
| A.java:94:30:94:37 | o [ : Number] | A.java:96:10:96:10 | o |
25+
| A.java:101:31:101:38 | o [ : Number] | A.java:103:10:103:10 | o |
26+
| A.java:108:36:108:43 | o [ : Number] | A.java:116:9:116:10 | o3 |
2027
nodes
2128
| A.java:6:29:6:36 | o [ : Number] | semmle.label | o [ : Number] |
2229
| A.java:8:9:8:9 | o | semmle.label | o |
@@ -26,32 +33,44 @@ nodes
2633
| A.java:20:9:20:9 | o | semmle.label | o |
2734
| A.java:24:35:24:42 | o [ : Number] | semmle.label | o [ : Number] |
2835
| A.java:32:8:32:9 | o3 | semmle.label | o3 |
29-
| A.java:42:18:42:31 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
30-
| A.java:43:19:43:32 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
31-
| A.java:44:20:44:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
32-
| A.java:45:24:45:37 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
33-
| A.java:57:18:57:31 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
34-
| A.java:58:19:58:32 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
35-
| A.java:59:20:59:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
36-
| A.java:60:24:60:37 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
37-
| A.java:71:20:71:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
38-
| A.java:72:21:72:34 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
39-
| A.java:73:26:73:39 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
40-
| A.java:78:30:78:37 | o [ : Number] | semmle.label | o [ : Number] |
41-
| A.java:80:10:80:10 | o | semmle.label | o |
42-
| A.java:85:31:85:38 | o [ : Number] | semmle.label | o [ : Number] |
43-
| A.java:87:10:87:10 | o | semmle.label | o |
44-
| A.java:92:36:92:43 | o [ : Number] | semmle.label | o [ : Number] |
45-
| A.java:100:9:100:10 | o3 | semmle.label | o3 |
36+
| A.java:35:36:35:43 | o [ : Number] | semmle.label | o [ : Number] |
37+
| A.java:35:36:35:43 | o [ : Number] | semmle.label | o [ : Number] |
38+
| A.java:35:36:35:43 | o [ : Number] | semmle.label | o [ : Number] |
39+
| A.java:43:8:43:9 | o3 | semmle.label | o3 |
40+
| A.java:53:18:53:31 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
41+
| A.java:54:19:54:32 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
42+
| A.java:55:20:55:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
43+
| A.java:56:24:56:37 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
44+
| A.java:57:25:57:38 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
45+
| A.java:58:25:58:38 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
46+
| A.java:59:25:59:38 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
47+
| A.java:61:25:61:38 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
48+
| A.java:73:18:73:31 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
49+
| A.java:74:19:74:32 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
50+
| A.java:75:20:75:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
51+
| A.java:76:24:76:37 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
52+
| A.java:87:20:87:33 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
53+
| A.java:88:21:88:34 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
54+
| A.java:89:26:89:39 | new Integer(...) [ : Number] | semmle.label | new Integer(...) [ : Number] |
55+
| A.java:94:30:94:37 | o [ : Number] | semmle.label | o [ : Number] |
56+
| A.java:96:10:96:10 | o | semmle.label | o |
57+
| A.java:101:31:101:38 | o [ : Number] | semmle.label | o [ : Number] |
58+
| A.java:103:10:103:10 | o | semmle.label | o |
59+
| A.java:108:36:108:43 | o [ : Number] | semmle.label | o [ : Number] |
60+
| A.java:116:9:116:10 | o3 | semmle.label | o3 |
4661
#select
47-
| A.java:42:18:42:31 | new Integer(...) [ : Number] | A.java:42:18:42:31 | new Integer(...) [ : Number] | A.java:8:9:8:9 | o | $@ | A.java:8:9:8:9 | o | o |
48-
| A.java:43:19:43:32 | new Integer(...) [ : Number] | A.java:43:19:43:32 | new Integer(...) [ : Number] | A.java:14:9:14:9 | o | $@ | A.java:14:9:14:9 | o | o |
49-
| A.java:44:20:44:33 | new Integer(...) [ : Number] | A.java:44:20:44:33 | new Integer(...) [ : Number] | A.java:20:9:20:9 | o | $@ | A.java:20:9:20:9 | o | o |
50-
| A.java:45:24:45:37 | new Integer(...) [ : Number] | A.java:45:24:45:37 | new Integer(...) [ : Number] | A.java:32:8:32:9 | o3 | $@ | A.java:32:8:32:9 | o3 | o3 |
51-
| A.java:57:18:57:31 | new Integer(...) [ : Number] | A.java:57:18:57:31 | new Integer(...) [ : Number] | A.java:8:9:8:9 | o | $@ | A.java:8:9:8:9 | o | o |
52-
| A.java:58:19:58:32 | new Integer(...) [ : Number] | A.java:58:19:58:32 | new Integer(...) [ : Number] | A.java:14:9:14:9 | o | $@ | A.java:14:9:14:9 | o | o |
53-
| A.java:59:20:59:33 | new Integer(...) [ : Number] | A.java:59:20:59:33 | new Integer(...) [ : Number] | A.java:20:9:20:9 | o | $@ | A.java:20:9:20:9 | o | o |
54-
| A.java:60:24:60:37 | new Integer(...) [ : Number] | A.java:60:24:60:37 | new Integer(...) [ : Number] | A.java:32:8:32:9 | o3 | $@ | A.java:32:8:32:9 | o3 | o3 |
55-
| A.java:71:20:71:33 | new Integer(...) [ : Number] | A.java:71:20:71:33 | new Integer(...) [ : Number] | A.java:80:10:80:10 | o | $@ | A.java:80:10:80:10 | o | o |
56-
| A.java:72:21:72:34 | new Integer(...) [ : Number] | A.java:72:21:72:34 | new Integer(...) [ : Number] | A.java:87:10:87:10 | o | $@ | A.java:87:10:87:10 | o | o |
57-
| A.java:73:26:73:39 | new Integer(...) [ : Number] | A.java:73:26:73:39 | new Integer(...) [ : Number] | A.java:100:9:100:10 | o3 | $@ | A.java:100:9:100:10 | o3 | o3 |
62+
| A.java:53:18:53:31 | new Integer(...) [ : Number] | A.java:53:18:53:31 | new Integer(...) [ : Number] | A.java:8:9:8:9 | o | $@ | A.java:8:9:8:9 | o | o |
63+
| A.java:54:19:54:32 | new Integer(...) [ : Number] | A.java:54:19:54:32 | new Integer(...) [ : Number] | A.java:14:9:14:9 | o | $@ | A.java:14:9:14:9 | o | o |
64+
| A.java:55:20:55:33 | new Integer(...) [ : Number] | A.java:55:20:55:33 | new Integer(...) [ : Number] | A.java:20:9:20:9 | o | $@ | A.java:20:9:20:9 | o | o |
65+
| A.java:56:24:56:37 | new Integer(...) [ : Number] | A.java:56:24:56:37 | new Integer(...) [ : Number] | A.java:32:8:32:9 | o3 | $@ | A.java:32:8:32:9 | o3 | o3 |
66+
| A.java:57:25:57:38 | new Integer(...) [ : Number] | A.java:57:25:57:38 | new Integer(...) [ : Number] | A.java:43:8:43:9 | o3 | $@ | A.java:43:8:43:9 | o3 | o3 |
67+
| A.java:58:25:58:38 | new Integer(...) [ : Number] | A.java:58:25:58:38 | new Integer(...) [ : Number] | A.java:43:8:43:9 | o3 | $@ | A.java:43:8:43:9 | o3 | o3 |
68+
| A.java:59:25:59:38 | new Integer(...) [ : Number] | A.java:59:25:59:38 | new Integer(...) [ : Number] | A.java:43:8:43:9 | o3 | $@ | A.java:43:8:43:9 | o3 | o3 |
69+
| A.java:61:25:61:38 | new Integer(...) [ : Number] | A.java:61:25:61:38 | new Integer(...) [ : Number] | A.java:43:8:43:9 | o3 | $@ | A.java:43:8:43:9 | o3 | o3 |
70+
| A.java:73:18:73:31 | new Integer(...) [ : Number] | A.java:73:18:73:31 | new Integer(...) [ : Number] | A.java:8:9:8:9 | o | $@ | A.java:8:9:8:9 | o | o |
71+
| A.java:74:19:74:32 | new Integer(...) [ : Number] | A.java:74:19:74:32 | new Integer(...) [ : Number] | A.java:14:9:14:9 | o | $@ | A.java:14:9:14:9 | o | o |
72+
| A.java:75:20:75:33 | new Integer(...) [ : Number] | A.java:75:20:75:33 | new Integer(...) [ : Number] | A.java:20:9:20:9 | o | $@ | A.java:20:9:20:9 | o | o |
73+
| A.java:76:24:76:37 | new Integer(...) [ : Number] | A.java:76:24:76:37 | new Integer(...) [ : Number] | A.java:32:8:32:9 | o3 | $@ | A.java:32:8:32:9 | o3 | o3 |
74+
| A.java:87:20:87:33 | new Integer(...) [ : Number] | A.java:87:20:87:33 | new Integer(...) [ : Number] | A.java:96:10:96:10 | o | $@ | A.java:96:10:96:10 | o | o |
75+
| A.java:88:21:88:34 | new Integer(...) [ : Number] | A.java:88:21:88:34 | new Integer(...) [ : Number] | A.java:103:10:103:10 | o | $@ | A.java:103:10:103:10 | o | o |
76+
| A.java:89:26:89:39 | new Integer(...) [ : Number] | A.java:89:26:89:39 | new Integer(...) [ : Number] | A.java:116:9:116:10 | o3 | $@ | A.java:116:9:116:10 | o3 | o3 |

0 commit comments

Comments
 (0)