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 33import java
44private import semmle.code.java.dataflow.ExternalFlow
55
6- private class ObjectsSummaryCsv extends SummaryModelCsv {
6+ private class JavaIoSummaryCsv extends SummaryModelCsv {
77 override predicate row ( string row ) {
88 row =
99 [
1010 //`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"
1415 ]
1516 }
1617}
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 4444| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:8:12:8:14 | seq |
4545| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:11:12:11:21 | seqFromSeq |
4646| 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(...) |
4750| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |
4851| MethodFlow.java:9:31:9:37 | taint(...) | MethodFlow.java:10:10:10:17 | tainted2 |
4952| 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