Skip to content

Commit 3114988

Browse files
committed
Add fluent models
Add tests
1 parent 9d80a43 commit 3114988

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.util.StringJoiner;
2+
3+
public class StringJoinerTests {
4+
5+
Object taint() {
6+
return null;
7+
}
8+
9+
void sink(Object o) {}
10+
11+
public void test() throws Exception {
12+
13+
{
14+
// "java.util;StringJoiner;true;add;;;Argument[-1];ReturnValue;value;manual"
15+
StringJoiner out = null;
16+
StringJoiner in = (StringJoiner) taint();
17+
out = in.add(null);
18+
sink(out);
19+
}
20+
{
21+
// "java.util;StringJoiner;true;add;;;Argument[0];Argument[-1];taint;manual"
22+
StringJoiner out = null;
23+
CharSequence in = (CharSequence) taint();
24+
out.add(in);
25+
sink(out);
26+
}
27+
{
28+
// "java.util;StringJoiner;true;merge;;;Argument[-1];ReturnValue;value;manual"
29+
StringJoiner out = null;
30+
StringJoiner in = (StringJoiner) taint();
31+
out = in.merge(null);
32+
sink(out);
33+
}
34+
{
35+
// "java.util;StringJoiner;true;merge;;;Argument[0];Argument[-1];taint;manual"
36+
StringJoiner out = null;
37+
StringJoiner in = (StringJoiner) taint();
38+
out.merge(in);
39+
sink(out);
40+
}
41+
{
42+
// "java.util;StringJoiner;true;setEmptyValue;;;Argument[-1];ReturnValue;taint;manual"
43+
StringJoiner out = null;
44+
StringJoiner in = (StringJoiner) taint();
45+
out = in.setEmptyValue(null);
46+
sink(out);
47+
}
48+
{
49+
// "java.util;StringJoiner;true;toString;;;Argument[-1];ReturnValue;taint;manual"
50+
String out = null;
51+
StringJoiner in = (StringJoiner) taint();
52+
out = in.toString();
53+
sink(out);
54+
}
55+
56+
}
57+
58+
}

java/ql/test/library-tests/dataflow/taint/test.expected

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@
7171
| StringBuilderTests.java:70:15:70:21 | taint(...) | StringBuilderTests.java:73:10:73:26 | new String(...) |
7272
| StringBuilderTests.java:79:15:79:21 | taint(...) | StringBuilderTests.java:80:10:80:40 | toString(...) |
7373
| StringBuilderTests.java:86:15:86:21 | taint(...) | StringBuilderTests.java:87:10:87:27 | substring(...) |
74+
| StringJoinerTests.java:16:37:16:43 | taint(...) | StringJoinerTests.java:18:9:18:11 | out |
75+
| StringJoinerTests.java:23:37:23:43 | taint(...) | StringJoinerTests.java:25:9:25:11 | out |
76+
| StringJoinerTests.java:30:37:30:43 | taint(...) | StringJoinerTests.java:32:9:32:11 | out |
77+
| StringJoinerTests.java:37:37:37:43 | taint(...) | StringJoinerTests.java:39:9:39:11 | out |
78+
| StringJoinerTests.java:44:37:44:43 | taint(...) | StringJoinerTests.java:46:9:46:11 | out |
79+
| StringJoinerTests.java:51:37:51:43 | taint(...) | StringJoinerTests.java:53:9:53:11 | out |
7480
| Varargs.java:7:8:7:14 | taint(...) | Varargs.java:14:10:14:10 | s |
7581
| Varargs.java:8:8:8:14 | taint(...) | Varargs.java:19:10:19:10 | s |
7682
| Varargs.java:8:17:8:23 | taint(...) | Varargs.java:19:10:19:10 | s |

0 commit comments

Comments
 (0)