@@ -2,14 +2,7 @@ import java
2
2
import semmle.code.java.Serializability
3
3
import semmle.code.java.dataflow.DataFlow
4
4
import 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
13
6
14
7
private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5:: Configuration {
15
8
TypeLiteralToParseAsFlowConfiguration ( ) {
@@ -18,16 +11,17 @@ private class TypeLiteralToParseAsFlowConfiguration extends DataFlow5::Configura
18
11
19
12
override predicate isSource ( DataFlow:: Node source ) { source .asExpr ( ) instanceof TypeLiteral }
20
13
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" ) }
27
15
28
16
TypeLiteral getSourceWithFlowToParseAs ( ) { hasFlow ( DataFlow:: exprNode ( result ) , _) }
29
17
}
30
18
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
+
31
25
/** A field that is deserialized by `HttpResponse.parseAs`. */
32
26
class HttpResponseParseAsDeserializableField extends DeserializableField {
33
27
HttpResponseParseAsDeserializableField ( ) {
0 commit comments