Skip to content

Commit 8485b6f

Browse files
authored
Merge pull request github#6691 from bmuskalla/moreStringMethods
Java: Support String#getChars and #translateEscapes
2 parents 220f2de + 199e015 commit 8485b6f

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ private class StringSummaryCsv extends SummaryModelCsv {
1818
"java.lang;String;false;format;(String,Object[]);;ArrayElement of Argument[1];ReturnValue;taint",
1919
"java.lang;String;false;formatted;(Object[]);;Argument[-1];ReturnValue;taint",
2020
"java.lang;String;false;formatted;(Object[]);;ArrayElement of Argument[0];ReturnValue;taint",
21+
"java.lang;String;false;getChars;;;Argument[-1];Argument[2];taint",
2122
"java.lang;String;false;getBytes;;;Argument[-1];ReturnValue;taint",
2223
"java.lang;String;false;indent;;;Argument[-1];ReturnValue;taint",
2324
"java.lang;String;false;intern;;;Argument[-1];ReturnValue;taint",
@@ -34,6 +35,7 @@ private class StringSummaryCsv extends SummaryModelCsv {
3435
"java.lang;String;false;toLowerCase;;;Argument[-1];ReturnValue;taint",
3536
"java.lang;String;false;toString;;;Argument[-1];ReturnValue;value",
3637
"java.lang;String;false;toUpperCase;;;Argument[-1];ReturnValue;taint",
38+
"java.lang;String;false;translateEscapes;;;Argument[-1];ReturnValue;taint",
3739
"java.lang;String;false;trim;;;Argument[-1];ReturnValue;taint",
3840
"java.lang;String;false;valueOf;(char);;Argument[0];ReturnValue;taint",
3941
"java.lang;String;false;valueOf;(char[],int,int);;Argument[0];ReturnValue;taint",

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ public static void maintest() throws java.io.UnsupportedEncodingException, java.
103103
sink(replAll);
104104
String replFirst = "some constant".replaceFirst(" ", s);
105105
sink(replFirst);
106+
char[] chars = new char[10];
107+
s.getChars(0, 1, chars, 0);
108+
sink(chars);
109+
String translated = s.translateEscapes();
110+
sink(translated);
106111

107112
ByteArrayOutputStream baos = null;
108113
ObjectOutput oos = null;

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,16 @@
3030
| B.java:15:21:15:27 | taint(...) | B.java:101:10:101:13 | repl |
3131
| B.java:15:21:15:27 | taint(...) | B.java:103:10:103:16 | replAll |
3232
| B.java:15:21:15:27 | taint(...) | B.java:105:10:105:18 | replFirst |
33-
| B.java:15:21:15:27 | taint(...) | B.java:118:12:118:25 | serializedData |
34-
| B.java:15:21:15:27 | taint(...) | B.java:130:12:130:27 | deserializedData |
35-
| B.java:15:21:15:27 | taint(...) | B.java:139:10:139:21 | taintedArray |
36-
| B.java:15:21:15:27 | taint(...) | B.java:141:10:141:22 | taintedArray2 |
37-
| B.java:15:21:15:27 | taint(...) | B.java:143:10:143:22 | taintedArray3 |
38-
| B.java:15:21:15:27 | taint(...) | B.java:146:10:146:44 | toURL(...) |
39-
| B.java:15:21:15:27 | taint(...) | B.java:149:10:149:37 | toPath(...) |
40-
| B.java:15:21:15:27 | taint(...) | B.java:152:10:152:46 | toFile(...) |
33+
| B.java:15:21:15:27 | taint(...) | B.java:108:10:108:14 | chars |
34+
| B.java:15:21:15:27 | taint(...) | B.java:110:10:110:19 | translated |
35+
| B.java:15:21:15:27 | taint(...) | B.java:123:12:123:25 | serializedData |
36+
| B.java:15:21:15:27 | taint(...) | B.java:135:12:135:27 | deserializedData |
37+
| B.java:15:21:15:27 | taint(...) | B.java:144:10:144:21 | taintedArray |
38+
| B.java:15:21:15:27 | taint(...) | B.java:146:10:146:22 | taintedArray2 |
39+
| B.java:15:21:15:27 | taint(...) | B.java:148:10:148:22 | taintedArray3 |
40+
| B.java:15:21:15:27 | taint(...) | B.java:151:10:151:44 | toURL(...) |
41+
| B.java:15:21:15:27 | taint(...) | B.java:154:10:154:37 | toPath(...) |
42+
| B.java:15:21:15:27 | taint(...) | B.java:157:10:157:46 | toFile(...) |
4143
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:8:12:8:14 | seq |
4244
| CharSeq.java:7:26:7:32 | taint(...) | CharSeq.java:11:12:11:21 | seqFromSeq |
4345
| MethodFlow.java:7:22:7:28 | taint(...) | MethodFlow.java:8:10:8:16 | tainted |

0 commit comments

Comments
 (0)