@@ -192,11 +192,6 @@ private predicate constructorStep(Expr tracked, ConstructorCall sink) {
192192 or
193193 s = "java.util.zip.GZIPInputStream" and argi = 0
194194 or
195- // string builders and buffers
196- s = "java.lang.StringBuilder" and argi = 0
197- or
198- s = "java.lang.StringBuffer" and argi = 0
199- or
200195 // a cookie with tainted ingredients is tainted
201196 s = "javax.servlet.http.Cookie" and argi = 0
202197 or
@@ -220,11 +215,6 @@ private predicate constructorStep(Expr tracked, ConstructorCall sink) {
220215 s = "java.io.File" and argi = 1
221216 )
222217 or
223- exists ( RefType t | t .getQualifiedName ( ) = "java.lang.Number" |
224- hasSubtype * ( t , sink .getConstructedType ( ) )
225- ) and
226- argi = 0
227- or
228218 // wrappers constructed by extension
229219 exists ( Constructor c , Parameter p , SuperConstructorInvocationStmt sup |
230220 c = sink .getConstructor ( ) and
@@ -310,13 +300,6 @@ private predicate qualifierToMethodStep(Expr tracked, MethodAccess sink) {
310300private predicate taintPreservingQualifierToMethod ( Method m ) {
311301 m instanceof CloneMethod
312302 or
313- exists ( Class c | c .getQualifiedName ( ) = "java.lang.Number" | hasSubtype * ( c , m .getDeclaringType ( ) ) ) and
314- (
315- m .getName ( ) .matches ( "to%String" ) or
316- m .getName ( ) = "toByteArray" or
317- m .getName ( ) .matches ( "%Value" )
318- )
319- or
320303 m .getDeclaringType ( ) .getASupertype * ( ) .hasQualifiedName ( "java.io" , "Reader" ) and
321304 (
322305 m .getName ( ) = "read" and m .getNumberOfParameters ( ) = 0
@@ -340,13 +323,6 @@ private predicate taintPreservingQualifierToMethod(Method m) {
340323 m .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "ObjectInputStream" ) and
341324 m .getName ( ) .matches ( "read%" )
342325 or
343- (
344- m .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuilder" ) or
345- m .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuffer" ) or
346- m .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" )
347- ) and
348- ( m .getName ( ) = "toString" or m .getName ( ) = "append" )
349- or
350326 m .getDeclaringType ( ) .hasQualifiedName ( "javax.xml.transform.sax" , "SAXSource" ) and
351327 m .hasName ( "getInputSource" )
352328 or
@@ -432,29 +408,6 @@ private predicate argToMethodStep(Expr tracked, MethodAccess sink) {
432408 * `arg`th argument is tainted.
433409 */
434410private predicate taintPreservingArgumentToMethod ( Method method , int arg ) {
435- exists ( Class c | c .getQualifiedName ( ) = "java.lang.Number" |
436- hasSubtype * ( c , method .getDeclaringType ( ) )
437- ) and
438- (
439- method .getName ( ) .matches ( "parse%" ) and arg = 0
440- or
441- method .getName ( ) .matches ( "valueOf%" ) and arg = 0
442- or
443- method .getName ( ) .matches ( "to%String" ) and arg = 0
444- )
445- or
446- (
447- method .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuilder" ) or
448- method .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuffer" )
449- ) and
450- (
451- method .getName ( ) = "append" and arg = 0
452- or
453- method .getName ( ) = "insert" and arg = 1
454- or
455- method .getName ( ) = "replace" and arg = 2
456- )
457- or
458411 (
459412 method .getDeclaringType ( ) .hasQualifiedName ( "java.util" , "Base64$Encoder" ) or
460413 method .getDeclaringType ( ) .hasQualifiedName ( "java.util" , "Base64$Decoder" ) or
@@ -518,10 +471,6 @@ private predicate taintPreservingArgumentToMethod(Method method, int arg) {
518471 method .hasName ( "sourceToInputSource" ) and
519472 arg = 0
520473 or
521- method .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" ) and
522- method .hasName ( "append" ) and
523- arg = 0
524- or
525474 method .( TaintPreservingCallable ) .returnsTaintFrom ( arg )
526475}
527476
@@ -602,17 +551,6 @@ private predicate taintPreservingArgumentToQualifier(Method method, int arg) {
602551 )
603552 )
604553 or
605- exists ( Method append |
606- method .overrides * ( append ) and
607- append .hasName ( "append" ) and
608- arg = 0 and
609- (
610- append .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuilder" ) or
611- append .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuffer" ) or
612- append .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" )
613- )
614- )
615- or
616554 method .( TaintPreservingCallable ) .transfersTaint ( arg , - 1 )
617555}
618556
0 commit comments