@@ -96,10 +96,43 @@ module Fasthttp {
9696 )
9797 or
9898 exists ( DataFlow:: CallNode writerCall |
99- writerCall = any ( Function fprintf | fprintf .hasQualifiedName ( "fmt" , "Fprintf" ) ) .getACall ( ) and
99+ writerCall =
100+ any ( Function fprintf | fprintf .hasQualifiedName ( "fmt" , [ "Fprint" , "Fprintf" , "Fprintln" ] ) )
101+ .getACall ( ) and
100102 sink = writerCall .getArgument ( 0 ) and
101103 body = writerCall .getSyntacticArgument ( any ( int i | i > 1 ) )
102104 )
105+ or
106+ exists ( DataFlow:: CallNode writerCall |
107+ writerCall =
108+ any ( Function ioCopy |
109+ ioCopy .hasQualifiedName ( "io" , [ "copy" , "CopyBuffer" , "CopyN" , "WriteString" ] )
110+ ) .getACall ( ) and
111+ sink = writerCall .getArgument ( 0 ) and
112+ body = writerCall .getArgument ( 1 )
113+ )
114+ or
115+ exists ( DataFlow:: CallNode writerCall |
116+ writerCall =
117+ any ( Function ioTeeReader | ioTeeReader .hasQualifiedName ( "io" , "TeeReader" ) ) .getACall ( ) and
118+ sink = writerCall .getArgument ( 1 ) and
119+ body = writerCall .getArgument ( 0 )
120+ )
121+ or
122+ exists ( DataFlow:: CallNode writerCall |
123+ writerCall =
124+ any ( Method bufioWriteTo | bufioWriteTo .hasQualifiedName ( "bufio" , "Reader" , "WriteTo" ) )
125+ .getACall ( ) and
126+ sink = writerCall .getArgument ( 0 ) and
127+ body = writerCall .getReceiver ( )
128+ )
129+ or
130+ exists ( DataFlow:: CallNode writerCall |
131+ writerCall =
132+ any ( Method bytes | bytes .hasQualifiedName ( "bytes" , "Buffer" , "WriteTo" ) ) .getACall ( ) and
133+ sink = writerCall .getArgument ( 0 ) and
134+ body = writerCall .getReceiver ( )
135+ )
103136 }
104137
105138 private predicate writerSink ( DataFlow:: Node sink ) { writerSinkAndBody ( sink , _) }
0 commit comments