Skip to content

Commit ba5dc3c

Browse files
committed
Add models of the javax.json package
1 parent d4bb8a7 commit ba5dc3c

File tree

19 files changed

+1252
-0
lines changed

19 files changed

+1252
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
lgtm,codescanning
2+
* Added models of `javax.json` classes and methods. This may lead to more results where tracking tainted dataflow across JSON encoding or decoding is needed to diagnose a security or other issue.

java/ql/src/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ private module Frameworks {
8282
private import semmle.code.java.frameworks.apache.Lang
8383
private import semmle.code.java.frameworks.guava.Guava
8484
private import semmle.code.java.frameworks.jackson.JacksonSerializability
85+
private import semmle.code.java.frameworks.JavaxJson
8586
private import semmle.code.java.frameworks.JaxWS
8687
private import semmle.code.java.frameworks.Optional
8788
private import semmle.code.java.frameworks.spring.SpringHttp
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* Provides models for the `javax.json` package.
3+
*/
4+
5+
import java
6+
private import semmle.code.java.dataflow.ExternalFlow
7+
8+
private class FlowSummaries extends SummaryModelCsv {
9+
override predicate row(string row) {
10+
row =
11+
[
12+
"javax.json;JsonArray;false;getBoolean;;;Argument[-1];ReturnValue;taint",
13+
"javax.json;JsonArray;false;getBoolean;;;Argument[1];ReturnValue;value",
14+
"javax.json;JsonArray;false;getInt;;;Argument[-1];ReturnValue;taint",
15+
"javax.json;JsonArray;false;getInt;;;Argument[1];ReturnValue;value",
16+
"javax.json;JsonArray;false;getJsonArray;;;Argument[-1];ReturnValue;taint",
17+
"javax.json;JsonArray;false;getJsonNumber;;;Argument[-1];ReturnValue;taint",
18+
"javax.json;JsonArray;false;getJsonObject;;;Argument[-1];ReturnValue;taint",
19+
"javax.json;JsonArray;false;getJsonString;;;Argument[-1];ReturnValue;taint",
20+
"javax.json;JsonArray;false;getString;;;Argument[-1];ReturnValue;taint",
21+
"javax.json;JsonArray;false;getString;;;Argument[1];ReturnValue;value",
22+
"javax.json;JsonArray;false;getValuesAs;;;Argument[-1];ReturnValue;taint",
23+
"javax.json;JsonArrayBuilder;false;add;;;Argument[-1];ReturnValue;value",
24+
"javax.json;JsonArrayBuilder;false;add;;;Argument[0];Argument[-1];taint",
25+
"javax.json;JsonArrayBuilder;false;addNull;;;Argument[-1];ReturnValue;value",
26+
"javax.json;JsonArrayBuilder;false;build;;;Argument[-1];ReturnValue;taint",
27+
"javax.json;JsonNumber;false;bigDecimalValue;;;Argument[-1];ReturnValue;taint",
28+
"javax.json;JsonNumber;false;bigIntegerValue;;;Argument[-1];ReturnValue;taint",
29+
"javax.json;JsonNumber;false;bigIntegerValueExact;;;Argument[-1];ReturnValue;taint",
30+
"javax.json;JsonNumber;false;doubleValue;;;Argument[-1];ReturnValue;taint",
31+
"javax.json;JsonNumber;false;intValue;;;Argument[-1];ReturnValue;taint",
32+
"javax.json;JsonNumber;false;intValueExact;;;Argument[-1];ReturnValue;taint",
33+
"javax.json;JsonNumber;false;longValue;;;Argument[-1];ReturnValue;taint",
34+
"javax.json;JsonNumber;false;longValueExact;;;Argument[-1];ReturnValue;taint",
35+
"javax.json;JsonObject;false;getBoolean;;;Argument[-1];ReturnValue;taint",
36+
"javax.json;JsonObject;false;getBoolean;;;Argument[1];ReturnValue;value",
37+
"javax.json;JsonObject;false;getInt;;;Argument[-1];ReturnValue;taint",
38+
"javax.json;JsonObject;false;getInt;;;Argument[1];ReturnValue;value",
39+
"javax.json;JsonObject;false;getJsonArray;;;Argument[-1];ReturnValue;taint",
40+
"javax.json;JsonObject;false;getJsonNumber;;;Argument[-1];ReturnValue;taint",
41+
"javax.json;JsonObject;false;getJsonObject;;;Argument[-1];ReturnValue;taint",
42+
"javax.json;JsonObject;false;getJsonString;;;Argument[-1];ReturnValue;taint",
43+
"javax.json;JsonObject;false;getString;;;Argument[-1];ReturnValue;taint",
44+
"javax.json;JsonObject;false;getString;;;Argument[1];ReturnValue;value",
45+
"javax.json;JsonObjectBuilder;false;add;;;Argument[-1];ReturnValue;value",
46+
"javax.json;JsonObjectBuilder;false;add;;;Argument[1];Argument[-1];taint",
47+
"javax.json;JsonObjectBuilder;false;addNull;;;Argument[-1];ReturnValue;value",
48+
"javax.json;JsonObjectBuilder;false;build;;;Argument[-1];ReturnValue;taint",
49+
"javax.json;JsonReader;false;read;;;Argument[-1];ReturnValue;taint",
50+
"javax.json;JsonReader;false;readArray;;;Argument[-1];ReturnValue;taint",
51+
"javax.json;JsonReader;false;readObject;;;Argument[-1];ReturnValue;taint",
52+
"javax.json;JsonReaderFactory;false;createReader;;;Argument[0];ReturnValue;taint",
53+
"javax.json;JsonString;false;getChars;;;Argument[-1];ReturnValue;taint",
54+
"javax.json;JsonString;false;getString;;;Argument[-1];ReturnValue;taint",
55+
"javax.json;JsonValue;false;toString;;;Argument[-1];ReturnValue;taint",
56+
"javax.json;JsonWriter;false;write;;;Argument[0];Argument[-1];taint",
57+
"javax.json;JsonWriter;false;writeArray;;;Argument[0];Argument[-1];taint",
58+
"javax.json;JsonWriter;false;writeObject;;;Argument[0];Argument[-1];taint",
59+
"javax.json;JsonWriterFactory;false;createWriter;;;Argument[-1];Argument[0];taint"
60+
]
61+
}
62+
}

0 commit comments

Comments
 (0)