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 {
46
46
"java.lang;AbstractStringBuilder;true;AbstractStringBuilder;(String);;Argument[0];Argument[-1];taint" ,
47
47
"java.lang;AbstractStringBuilder;true;append;;;Argument[0];Argument[-1];taint" ,
48
48
"java.lang;AbstractStringBuilder;true;append;;;Argument[-1];ReturnValue;value" ,
49
+ "java.lang;AbstractStringBuilder;true;getChars;;;Argument[-1];Argument[2];taint" ,
49
50
"java.lang;AbstractStringBuilder;true;insert;;;Argument[1];Argument[-1];taint" ,
50
51
"java.lang;AbstractStringBuilder;true;insert;;;Argument[-1];ReturnValue;value" ,
51
52
"java.lang;AbstractStringBuilder;true;replace;;;Argument[-1];ReturnValue;value" ,
52
53
"java.lang;AbstractStringBuilder;true;replace;;;Argument[2];Argument[-1];taint" ,
53
54
"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" ,
54
57
"java.lang;AbstractStringBuilder;true;toString;;;Argument[-1];ReturnValue;taint" ,
55
58
"java.lang;StringBuffer;true;StringBuffer;(CharSequence);;Argument[0];Argument[-1];taint" ,
56
59
"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() {
63
63
sb .insert (45 , taint ());
64
64
sink (sb .toString ());
65
65
}
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
+ }
66
89
}
Original file line number Diff line number Diff line change 56
56
| StringBuilderTests.java:48:69:48:75 | taint(...) | StringBuilderTests.java:50:10:50:22 | toString(...) |
57
57
| StringBuilderTests.java:56:24:56:30 | taint(...) | StringBuilderTests.java:57:10:57:22 | toString(...) |
58
58
| 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(...) |
59
62
| Varargs.java:7:8:7:14 | taint(...) | Varargs.java:14:10:14:10 | s |
60
63
| Varargs.java:8:8:8:14 | taint(...) | Varargs.java:19:10:19:10 | s |
61
64
| 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