File tree Expand file tree Collapse file tree 3 files changed +33
-4
lines changed
lib/semmle/code/java/frameworks
test/library-tests/dataflow/taint Expand file tree Collapse file tree 3 files changed +33
-4
lines changed Original file line number Diff line number Diff line change 3
3
import java
4
4
private import semmle.code.java.dataflow.ExternalFlow
5
5
6
- private class ObjectsSummaryCsv extends SummaryModelCsv {
6
+ private class JavaIoSummaryCsv extends SummaryModelCsv {
7
7
override predicate row ( string row ) {
8
8
row =
9
9
[
10
10
//`namespace; type; subtypes; name; signature; ext; input; output; kind`
11
- "java.lang;Appendable;false;append;;;Argument[0];Argument[-1];value" ,
12
- "java.lang;Appendable;false;append;;;Argument[-1];ReturnValue;value" ,
13
- "java.io;Writer;false;write;;;Argument[0];Argument[-1];value"
11
+ "java.lang;Appendable;true;append;;;Argument[0];Argument[-1];taint" ,
12
+ "java.lang;Appendable;true;append;;;Argument[-1];ReturnValue;taint" ,
13
+ "java.io;Writer;true;write;;;Argument[0];Argument[-1];taint" ,
14
+ "java.io;StringWriter;false;toString;;;Argument[-1];ReturnValue;taint"
14
15
]
15
16
}
16
17
}
Original file line number Diff line number Diff line change
1
+ import java .io .*;
2
+
3
+ public class JavaIo {
4
+ public static String taint () { return "tainted" ; }
5
+
6
+ public static void sink (Object o ) { }
7
+
8
+ void testWritingChars () throws IOException {
9
+ StringWriter w = new StringWriter ();
10
+ char [] chars = taint ().toCharArray ();
11
+ sink (w .toString ());
12
+ w .write (chars );
13
+ sink (w .toString ());
14
+ sink (w .getBuffer ().toString ());
15
+ }
16
+
17
+ void testAppendingToWriter () throws IOException {
18
+ StringWriter w = new StringWriter ();
19
+ CharSequence seq = taint ();
20
+ sink (w .toString ());
21
+ w .append (seq );
22
+ sink (w .toString ());
23
+ }
24
+
25
+ }
Original file line number Diff line number Diff line change 44
44
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:8:12:8:14 | seq |
45
45
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:11:12:11:21 | seqFromSeq |
46
46
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:14:12:14:24 | stringFromSeq |
47
+ | JavaIo.java:10:20:10:26 | taint(...) | JavaIo.java:13:10:13:21 | toString(...) |
48
+ | JavaIo.java:10:20:10:26 | taint(...) | JavaIo.java:14:10:14:33 | toString(...) |
49
+ | JavaIo.java:19:24:19:30 | taint(...) | JavaIo.java:22:10:22:21 | toString(...) |
47
50
| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |
48
51
| MethodFlow.java:9:31:9:37 | taint(...) | MethodFlow.java:10:10:10:17 | tainted2 |
49
52
| MethodFlow.java:11:35:11:41 | taint(...) | MethodFlow.java:12:10:12:17 | tainted3 |
You can’t perform that action at this time.
0 commit comments