File tree Expand file tree Collapse file tree 3 files changed +29
-0
lines changed
lib/semmle/code/java/frameworks
test/library-tests/dataflow/taint Expand file tree Collapse file tree 3 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -46,11 +46,14 @@ private class StringSummaryCsv extends SummaryModelCsv {
4646 "java.lang;AbstractStringBuilder;true;AbstractStringBuilder;(String);;Argument[0];Argument[-1];taint" ,
4747 "java.lang;AbstractStringBuilder;true;append;;;Argument[0];Argument[-1];taint" ,
4848 "java.lang;AbstractStringBuilder;true;append;;;Argument[-1];ReturnValue;value" ,
49+ "java.lang;AbstractStringBuilder;true;getChars;;;Argument[-1];Argument[2];taint" ,
4950 "java.lang;AbstractStringBuilder;true;insert;;;Argument[1];Argument[-1];taint" ,
5051 "java.lang;AbstractStringBuilder;true;insert;;;Argument[-1];ReturnValue;value" ,
5152 "java.lang;AbstractStringBuilder;true;replace;;;Argument[-1];ReturnValue;value" ,
5253 "java.lang;AbstractStringBuilder;true;replace;;;Argument[2];Argument[-1];taint" ,
5354 "java.lang;AbstractStringBuilder;true;reverse;;;Argument[-1];ReturnValue;value" ,
55+ "java.lang;AbstractStringBuilder;true;subSequence;;;Argument[-1];ReturnValue;taint" ,
56+ "java.lang;AbstractStringBuilder;true;substring;;;Argument[-1];ReturnValue;taint" ,
5457 "java.lang;AbstractStringBuilder;true;toString;;;Argument[-1];ReturnValue;taint" ,
5558 "java.lang;StringBuffer;true;StringBuffer;(CharSequence);;Argument[0];Argument[-1];taint" ,
5659 "java.lang;StringBuffer;true;StringBuffer;(String);;Argument[0];Argument[-1];taint" ,
Original file line number Diff line number Diff line change @@ -63,4 +63,27 @@ static void stringBuilderInsertBad() {
6363 sb .insert (45 , taint ());
6464 sink (sb .toString ());
6565 }
66+
67+ static void stringBuilderGetCharsBad () {
68+ StringBuilder sb = new StringBuilder ();
69+ sb .append ("from preferences select locale where user=''" );
70+ sb .append (taint ());
71+ char [] chars = null ;
72+ sb .getChars (0 , 0 , chars , 0 );
73+ sink (new String (chars ));
74+ }
75+
76+ static void stringBuilderSubSequenceBad () {
77+ StringBuilder sb = new StringBuilder ();
78+ sb .append ("from preferences select locale where user=''" );
79+ sb .append (taint ());
80+ sink (sb .subSequence (0 , 0 ).toString ());
81+ }
82+
83+ static void stringBuilderSubstringBad () {
84+ StringBuilder sb = new StringBuilder ();
85+ sb .append ("from preferences select locale where user=''" );
86+ sb .append (taint ());
87+ sink (sb .substring (0 , 0 ));
88+ }
6689}
Original file line number Diff line number Diff line change 5656| StringBuilderTests.java:48:69:48:75 | taint(...) | StringBuilderTests.java:50:10:50:22 | toString(...) |
5757| StringBuilderTests.java:56:24:56:30 | taint(...) | StringBuilderTests.java:57:10:57:22 | toString(...) |
5858| StringBuilderTests.java:63:19:63:25 | taint(...) | StringBuilderTests.java:64:10:64:22 | toString(...) |
59+ | StringBuilderTests.java:70:15:70:21 | taint(...) | StringBuilderTests.java:73:10:73:26 | new String(...) |
60+ | StringBuilderTests.java:79:15:79:21 | taint(...) | StringBuilderTests.java:80:10:80:40 | toString(...) |
61+ | StringBuilderTests.java:86:15:86:21 | taint(...) | StringBuilderTests.java:87:10:87:27 | substring(...) |
5962| Varargs.java:7:8:7:14 | taint(...) | Varargs.java:14:10:14:10 | s |
6063| Varargs.java:8:8:8:14 | taint(...) | Varargs.java:19:10:19:10 | s |
6164| Varargs.java:8:17:8:23 | taint(...) | Varargs.java:19:10:19:10 | s |
You can’t perform that action at this time.
0 commit comments