@@ -322,7 +322,11 @@ private predicate taintPreservingQualifierToMethod(Method m) {
322322 )
323323 or
324324 m .getDeclaringType ( ) .getQualifiedName ( ) .matches ( "%StringWriter" ) and
325- m .getName ( ) = "toString"
325+ (
326+ m .getName ( ) = "getBuffer"
327+ or
328+ m .getName ( ) = "toString"
329+ )
326330 or
327331 m .getDeclaringType ( ) .hasQualifiedName ( "java.util" , "StringTokenizer" ) and
328332 m .getName ( ) .matches ( "next%" )
@@ -335,7 +339,8 @@ private predicate taintPreservingQualifierToMethod(Method m) {
335339 or
336340 (
337341 m .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuilder" ) or
338- m .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuffer" )
342+ m .getDeclaringType ( ) .hasQualifiedName ( "java.lang" , "StringBuffer" ) or
343+ m .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" )
339344 ) and
340345 ( m .getName ( ) = "toString" or m .getName ( ) = "append" )
341346 or
@@ -506,6 +511,10 @@ private predicate taintPreservingArgumentToMethod(Method method, int arg) {
506511 method instanceof JacksonWriteValueMethod and
507512 method .getNumberOfParameters ( ) = 1 and
508513 arg = 0
514+ or
515+ method .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" ) and
516+ method .hasName ( "append" ) and
517+ arg = 0
509518}
510519
511520/**
@@ -580,9 +589,20 @@ private predicate argToQualifierStep(Expr tracked, Expr sink) {
580589private predicate taintPreservingArgumentToQualifier ( Method method , int arg ) {
581590 exists ( Method write |
582591 method .overrides * ( write ) and
583- write .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "OutputStream" ) and
584592 write .hasName ( "write" ) and
585- arg = 0
593+ arg = 0 and
594+ (
595+ write .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "OutputStream" )
596+ or
597+ write .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" )
598+ )
599+ )
600+ or
601+ exists ( Method append |
602+ method .overrides * ( append ) and
603+ append .hasName ( "append" ) and
604+ arg = 0 and
605+ append .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" )
586606 )
587607}
588608
0 commit comments