Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7dae612

Browse files
author
Benjamin Muskalla
committed
Support CharSequence#toString
Given CharSequence is often used as an alias for String, ensure taint through toString is flowing
1 parent ca9d543 commit 7dae612

3 files changed

Lines changed: 6 additions & 1 deletion

File tree

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ private class StringSummaryCsv extends SummaryModelCsv {
5454
"java.lang;StringBuffer;true;StringBuffer;(CharSequence);;Argument[0];Argument[-1];taint",
5555
"java.lang;StringBuffer;true;StringBuffer;(String);;Argument[0];Argument[-1];taint",
5656
"java.lang;StringBuilder;true;StringBuilder;;;Argument[0];Argument[-1];taint",
57-
"java.lang;CharSequence;true;subSequence;;;Argument[-1];ReturnValue;taint"
57+
"java.lang;CharSequence;true;subSequence;;;Argument[-1];ReturnValue;taint",
58+
"java.lang;CharSequence;true;toString;;;Argument[-1];ReturnValue;taint"
5859
]
5960
}
6061
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@ void test1() {
99

1010
CharSequence seqFromSeq = seq.subSequence(0, 1);
1111
sink(seqFromSeq);
12+
13+
String stringFromSeq = seq.toString();
14+
sink(stringFromSeq);
1215
}
1316
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
| B.java:15:21:15:27 | taint(...) | B.java:157:10:157:46 | toFile(...) |
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 |
46+
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:14:12:14:24 | stringFromSeq |
4647
| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |
4748
| MethodFlow.java:9:31:9:37 | taint(...) | MethodFlow.java:10:10:10:17 | tainted2 |
4849
| MethodFlow.java:11:35:11:41 | taint(...) | MethodFlow.java:12:10:12:17 | tainted3 |

0 commit comments

Comments
 (0)