@@ -322,7 +322,11 @@ private predicate taintPreservingQualifierToMethod(Method m) {
322
322
)
323
323
or
324
324
m .getDeclaringType ( ) .getQualifiedName ( ) .matches ( "%StringWriter" ) and
325
- m .getName ( ) = "toString"
325
+ (
326
+ m .getName ( ) = "getBuffer"
327
+ or
328
+ m .getName ( ) = "toString"
329
+ )
326
330
or
327
331
m .getDeclaringType ( ) .hasQualifiedName ( "java.util" , "StringTokenizer" ) and
328
332
m .getName ( ) .matches ( "next%" )
@@ -335,7 +339,8 @@ private predicate taintPreservingQualifierToMethod(Method m) {
335
339
or
336
340
(
337
341
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" )
339
344
) and
340
345
( m .getName ( ) = "toString" or m .getName ( ) = "append" )
341
346
or
@@ -506,6 +511,10 @@ private predicate taintPreservingArgumentToMethod(Method method, int arg) {
506
511
method instanceof JacksonWriteValueMethod and
507
512
method .getNumberOfParameters ( ) = 1 and
508
513
arg = 0
514
+ or
515
+ method .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "StringWriter" ) and
516
+ method .hasName ( "append" ) and
517
+ arg = 0
509
518
}
510
519
511
520
/**
@@ -580,9 +589,20 @@ private predicate argToQualifierStep(Expr tracked, Expr sink) {
580
589
private predicate taintPreservingArgumentToQualifier ( Method method , int arg ) {
581
590
exists ( Method write |
582
591
method .overrides * ( write ) and
583
- write .getDeclaringType ( ) .hasQualifiedName ( "java.io" , "OutputStream" ) and
584
592
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" )
586
606
)
587
607
}
588
608
0 commit comments