Skip to content

Commit 3928ffd

Browse files
author
Benjamin Muskalla
committed
Support CharSequence#subSequence
1 parent b7e608a commit 3928ffd

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

java/ql/src/semmle/code/java/frameworks/Strings.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ private class StringSummaryCsv extends SummaryModelCsv {
4848
"java.lang;AbstractStringBuilder;true;toString;;;Argument[-1];ReturnValue;taint",
4949
"java.lang;StringBuffer;true;StringBuffer;(CharSequence);;Argument[0];Argument[-1];taint",
5050
"java.lang;StringBuffer;true;StringBuffer;(String);;Argument[0];Argument[-1];taint",
51-
"java.lang;StringBuilder;true;StringBuilder;;;Argument[0];Argument[-1];taint"
51+
"java.lang;StringBuilder;true;StringBuilder;;;Argument[0];Argument[-1];taint",
52+
"java.lang;CharSequence;true;subSequence;;;Argument[-1];ReturnValue;taint"
5253
]
5354
}
5455
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public class CharSeq {
2+
public static String taint() { return "tainted"; }
3+
4+
public static void sink(Object o) { }
5+
6+
void test1() {
7+
CharSequence seq = taint().subSequence(0,1);
8+
sink(seq);
9+
10+
CharSequence seqFromSeq = seq.subSequence(0, 1);
11+
sink(seqFromSeq);
12+
}
13+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
| B.java:15:21:15:27 | taint(...) | B.java:143:10:143:44 | toURL(...) |
3838
| B.java:15:21:15:27 | taint(...) | B.java:146:10:146:37 | toPath(...) |
3939
| B.java:15:21:15:27 | taint(...) | B.java:149:10:149:46 | toFile(...) |
40+
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:8:12:8:14 | seq |
41+
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:11:12:11:21 | seqFromSeq |
4042
| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |
4143
| MethodFlow.java:9:31:9:37 | taint(...) | MethodFlow.java:10:10:10:17 | tainted2 |
4244
| MethodFlow.java:11:35:11:41 | taint(...) | MethodFlow.java:12:10:12:17 | tainted3 |

0 commit comments

Comments
 (0)