@@ -2,7 +2,14 @@ import java
22import semmle.code.java.Serializability
33import semmle.code.java.dataflow.DataFlow
44import semmle.code.java.dataflow.DataFlow5
5- private import semmle.code.java.dataflow.ExternalFlow
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+ }
613
714private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5:: Configuration {
815 TypeLiteralToParseAsFlowConfiguration ( ) {
@@ -11,17 +18,16 @@ private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5::Configura
1118
1219 override predicate isSource ( DataFlow:: Node source ) { source .asExpr ( ) instanceof TypeLiteral }
1320
14- override predicate isSink ( DataFlow:: Node sink ) { sinkNode ( sink , "google-parse-as" ) }
21+ override predicate isSink ( DataFlow:: Node sink ) {
22+ exists ( MethodAccess ma |
23+ ma .getAnArgument ( ) = sink .asExpr ( ) and
24+ ma .getMethod ( ) instanceof ParseAsMethod
25+ )
26+ }
1527
1628 TypeLiteral getSourceWithFlowToParseAs ( ) { hasFlow ( DataFlow:: exprNode ( result ) , _) }
1729}
1830
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-
2531/** A field that is deserialized by `HttpResponse.parseAs`. */
2632class HttpResponseParseAsDeserializableField extends DeserializableField {
2733 HttpResponseParseAsDeserializableField ( ) {
0 commit comments