@@ -2,14 +2,7 @@ import java
22import semmle.code.java.Serializability
33import semmle.code.java.dataflow.DataFlow
44import semmle.code.java.dataflow.DataFlow5
5-
6- /** The method `parseAs` in `com.google.api.client.http.HttpResponse`. */
7- private class ParseAsMethod extends Method {
8- ParseAsMethod ( ) {
9- this .getDeclaringType ( ) .hasQualifiedName ( "com.google.api.client.http" , "HttpResponse" ) and
10- this .hasName ( "parseAs" )
11- }
12- }
5+ private import semmle.code.java.dataflow.ExternalFlow
136
147private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5:: Configuration {
158 TypeLiteralToParseAsFlowConfiguration ( ) {
@@ -18,16 +11,17 @@ private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5::Configura
1811
1912 override predicate isSource ( DataFlow:: Node source ) { source .asExpr ( ) instanceof TypeLiteral }
2013
21- override predicate isSink ( DataFlow:: Node sink ) {
22- exists ( MethodAccess ma |
23- ma .getAnArgument ( ) = sink .asExpr ( ) and
24- ma .getMethod ( ) instanceof ParseAsMethod
25- )
26- }
14+ override predicate isSink ( DataFlow:: Node sink ) { sinkNode ( sink , "google-parse-as" ) }
2715
2816 TypeLiteral getSourceWithFlowToParseAs ( ) { hasFlow ( DataFlow:: exprNode ( result ) , _) }
2917}
3018
19+ private class ParseAsSinkModel extends SinkModelCsv {
20+ override predicate row ( string row ) {
21+ row = [ "com.google.api.client.http;HttpResponse;false;parseAs;;;Argument;google-parse-as" ]
22+ }
23+ }
24+
3125/** A field that is deserialized by `HttpResponse.parseAs`. */
3226class HttpResponseParseAsDeserializableField extends DeserializableField {
3327 HttpResponseParseAsDeserializableField ( ) {
0 commit comments