File tree Expand file tree Collapse file tree 3 files changed +29
-6
lines changed
lib/semmle/code/java/frameworks
test/library-tests/dataflow/taint Expand file tree Collapse file tree 3 files changed +29
-6
lines changed Original file line number Diff line number Diff line change @@ -11,7 +11,10 @@ private class JavaIoSummaryCsv extends SummaryModelCsv {
11
11
"java.lang;Appendable;true;append;;;Argument[0];Argument[-1];taint" ,
12
12
"java.lang;Appendable;true;append;;;Argument[-1];ReturnValue;taint" ,
13
13
"java.io;Writer;true;write;;;Argument[0];Argument[-1];taint" ,
14
- "java.io;StringWriter;false;toString;;;Argument[-1];ReturnValue;taint"
14
+ "java.io;Writer;true;toString;;;Argument[-1];ReturnValue;taint" ,
15
+ "java.io;CharArrayWriter;true;toCharArray;;;Argument[-1];ReturnValue;taint" ,
16
+ "java.nio.channels;ReadableByteChannel;true;read;(ByteBuffer);;Argument[-1];Argument[0];taint" ,
17
+ "java.nio.channels;Channels;false;newChannel;(InputStream);;Argument[0];ReturnValue;taint"
15
18
]
16
19
}
17
20
}
Original file line number Diff line number Diff line change 1
1
import java .io .*;
2
+ import java .nio .ByteBuffer ;
3
+ import java .nio .channels .Channels ;
4
+ import java .nio .channels .ReadableByteChannel ;
2
5
3
6
public class JavaIo {
4
7
public static String taint () { return "tainted" ; }
@@ -15,11 +18,27 @@ void testWritingChars() throws IOException {
15
18
}
16
19
17
20
void testAppendingToWriter () throws IOException {
18
- StringWriter w = new StringWriter ();
21
+ Writer w = new StringWriter ();
19
22
CharSequence seq = taint ();
20
23
sink (w .toString ());
21
- w .append (seq );
24
+ w .append ("harmless" ). append ( seq );
22
25
sink (w .toString ());
23
26
}
27
+
28
+ void testCharArrayWriter () throws IOException {
29
+ CharArrayWriter w = new CharArrayWriter ();
30
+ CharSequence seq = taint ();
31
+ sink (w .toCharArray ());
32
+ w .append ("harmless" ).append (seq );
33
+ sink (w .toCharArray ());
34
+ }
35
+
36
+ void testByteChannelToBuffer () throws IOException {
37
+ ReadableByteChannel c = Channels .newChannel (new ByteArrayInputStream (taint ().getBytes ()));
38
+ ByteBuffer buf = ByteBuffer .allocate (10 );
39
+ sink (buf );
40
+ c .read (buf );
41
+ sink (buf );
42
+ }
24
43
25
44
}
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
+ | JavaIo.java:13:20:13:26 | taint(...) | JavaIo.java:16:10:16:21 | toString(...) |
48
+ | JavaIo.java:13:20:13:26 | taint(...) | JavaIo.java:17:10:17:33 | toString(...) |
49
+ | JavaIo.java:30:24:30:30 | taint(...) | JavaIo.java:33:10:33:24 | toCharArray(...) |
50
+ | JavaIo.java:37:74:37:80 | taint(...) | JavaIo.java:41:10:41:12 | buf |
50
51
| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |
51
52
| MethodFlow.java:9:31:9:37 | taint(...) | MethodFlow.java:10:10:10:17 | tainted2 |
52
53
| 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