@@ -10,7 +10,6 @@ private import semmle.code.java.dataflow.DataFlow
1010 * ensuring that they are visible to the taint tracking library.
1111 */
1212private module Frameworks {
13- private import semmle.code.java.Strings
1413 private import semmle.code.java.frameworks.jackson.JacksonSerializability
1514 private import semmle.code.java.frameworks.android.Intent
1615 private import semmle.code.java.frameworks.android.SQLite
@@ -85,30 +84,6 @@ abstract class TaintPreservingCallable extends Callable {
8584 predicate transfersTaint ( int src , int sink ) { none ( ) }
8685}
8786
88- private class StringTaintPreservingMethod extends TaintPreservingCallable {
89- StringTaintPreservingMethod ( ) {
90- this .getDeclaringType ( ) instanceof TypeString and
91- (
92- this .hasName ( [
93- "concat" , "copyValueOf" , "endsWith" , "format" , "formatted" , "getBytes" , "indent" ,
94- "intern" , "join" , "repeat" , "split" , "strip" , "stripIndent" , "stripLeading" ,
95- "stripTrailing" , "substring" , "toCharArray" , "toLowerCase" , "toString" , "toUpperCase" ,
96- "trim"
97- ] )
98- or
99- this .hasName ( "valueOf" ) and this .getParameterType ( 0 ) instanceof Array
100- )
101- }
102-
103- override predicate returnsTaintFrom ( int arg ) {
104- arg = - 1 and not this .isStatic ( )
105- or
106- this .hasName ( [ "concat" , "copyValueOf" , "valueOf" ] ) and arg = 0
107- or
108- this .hasName ( [ "format" , "formatted" , "join" ] ) and arg = [ 0 .. getNumberOfParameters ( ) ]
109- }
110- }
111-
11287private class NumberTaintPreservingCallable extends TaintPreservingCallable {
11388 int argument ;
11489
@@ -128,46 +103,3 @@ private class NumberTaintPreservingCallable extends TaintPreservingCallable {
128103
129104 override predicate returnsTaintFrom ( int arg ) { arg = argument }
130105}
131-
132- /** Holds for the types `StringBuilder`, `StringBuffer`, and `StringWriter`. */
133- private predicate stringBuilderType ( RefType t ) {
134- t instanceof StringBuildingType or
135- t .hasQualifiedName ( "java.io" , "StringWriter" )
136- }
137-
138- private class StringBuilderTaintPreservingCallable extends TaintPreservingCallable {
139- StringBuilderTaintPreservingCallable ( ) {
140- exists ( Method m |
141- this .( Method ) .overrides * ( m ) and
142- stringBuilderType ( m .getDeclaringType ( ) ) and
143- m .hasName ( [ "append" , "insert" , "replace" , "toString" , "write" ] )
144- )
145- or
146- this .( Constructor ) .getParameterType ( 0 ) instanceof RefType and
147- stringBuilderType ( this .getDeclaringType ( ) )
148- }
149-
150- override predicate returnsTaintFrom ( int arg ) {
151- arg = - 1 and
152- not this instanceof Constructor
153- or
154- this instanceof Constructor and arg = 0
155- or
156- this .hasName ( "append" ) and arg = 0
157- or
158- this .hasName ( "insert" ) and arg = 1
159- or
160- this .hasName ( "replace" ) and arg = 2
161- }
162-
163- override predicate transfersTaint ( int src , int sink ) {
164- returnsTaintFrom ( src ) and
165- sink = - 1 and
166- src != - 1 and
167- not this instanceof Constructor
168- or
169- this .hasName ( "write" ) and
170- src = 0 and
171- sink = - 1
172- }
173- }
0 commit comments