Files
codeql/java/ql/lib/semmle/code/java/frameworks/JsonJava.qll
2022-02-21 08:16:55 +01:00

253 lines
20 KiB
Plaintext

/**
* Provides models for working with the JSON-java library (package `org.json`).
*/
import semmle.code.java.dataflow.ExternalFlow
private class FlowModels extends SummaryModelCsv {
override predicate row(string row) {
row =
[
"org.json;JSONString;true;toJSONString;;;Argument[-1];ReturnValue;taint",
"org.json;XMLXsiTypeConverter;true;convert;;;Argument[0];ReturnValue;taint",
"org.json;CDL;false;rowToJSONArray;;;Argument[0];ReturnValue;taint",
"org.json;CDL;false;rowToJSONObject;;;Argument[0..1];ReturnValue;taint",
"org.json;CDL;false;rowToString;;;Argument[0];ReturnValue;taint",
"org.json;CDL;false;toJSONArray;;;Argument[0..1];ReturnValue;taint",
"org.json;CDL;false;toString;;;Argument[0..1];ReturnValue;taint",
"org.json;Cookie;false;escape;;;Argument[0];ReturnValue;taint",
"org.json;Cookie;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;Cookie;false;toString;;;Argument[0];ReturnValue;taint",
"org.json;Cookie;false;unescape;;;Argument[0];ReturnValue;taint",
"org.json;CookieList;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;CookieList;false;toString;;;Argument[0];ReturnValue;taint",
"org.json;HTTP;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;HTTP;false;toString;;;Argument[0];ReturnValue;taint",
"org.json;HTTPTokener;false;HTTPTokener;;;Argument[0];Argument[-1];taint",
"org.json;HTTPTokener;false;nextToken;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;JSONArray;(Collection);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONArray;false;JSONArray;(Iterable);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONArray;false;JSONArray;(JSONArray);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;JSONArray;(JSONTokener);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;JSONArray;(Object);;Argument[0].ArrayElement;Argument[-1];taint",
"org.json;JSONArray;false;JSONArray;(String);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;get;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getBigDecimal;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getBigInteger;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getBoolean;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getDouble;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getEnum;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getFloat;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getInt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getJSONArray;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getJSONObject;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getLong;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getNumber;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;getString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;iterator;;;Argument[-1];ReturnValue.Element;taint",
"org.json;JSONArray;false;join;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;join;;;Argument[0];ReturnValue;taint",
"org.json;JSONArray;false;opt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optBigDecimal;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optBigInteger;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optBoolean;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optDouble;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optEnum;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optFloat;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optInt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optJSONArray;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optJSONObject;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optLong;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optNumber;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optQuery;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;optString;;;Argument[-1];ReturnValue;taint",
// Default values that may be returned by the `opt*` methods above:
"org.json;JSONArray;false;optBigDecimal;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optBigInteger;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optBoolean;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optDouble;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optEnum;;;Argument[2];ReturnValue;value",
"org.json;JSONArray;false;optFloat;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optInt;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optLong;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optNumber;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;optString;;;Argument[1];ReturnValue;value",
"org.json;JSONArray;false;put;;;Argument[-1];ReturnValue;value",
"org.json;JSONArray;false;put;(boolean);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(Collection);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONArray;false;put;(double);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(float);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(int);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(long);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(Map);;Argument[0].MapKey;Argument[-1];taint",
"org.json;JSONArray;false;put;(Map);;Argument[0].MapValue;Argument[-1];taint",
"org.json;JSONArray;false;put;(Object);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,boolean);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,Collection);;Argument[1].Element;Argument[-1];taint",
"org.json;JSONArray;false;put;(int,double);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,float);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,int);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,long);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;put;(int,Map);;Argument[1].MapKey;Argument[-1];taint",
"org.json;JSONArray;false;put;(int,Map);;Argument[1].MapValue;Argument[-1];taint",
"org.json;JSONArray;false;put;(int,Object);;Argument[1];Argument[-1];taint",
"org.json;JSONArray;false;putAll;;;Argument[-1];ReturnValue;value",
"org.json;JSONArray;false;putAll;(Collection);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONArray;false;putAll;(Iterable);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONArray;false;putAll;(JSONArray);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;putAll;(Object);;Argument[0];Argument[-1];taint",
"org.json;JSONArray;false;query;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;remove;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;JSONArray;false;toJSONObject;;;Argument[-1];ReturnValue;taint",
"org.json;JSONArray;false;toList;;;Argument[0];ReturnValue.Element;taint",
"org.json;JSONArray;false;toString;;;Argument[0];ReturnValue;taint",
"org.json;JSONArray;false;write;;;Argument[-1];Argument[0];taint",
"org.json;JSONArray;false;write;;;Argument[0];ReturnValue;value",
"org.json;JSONML;false;toJSONArray;;;Argument[0];ReturnValue;taint",
"org.json;JSONML;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;JSONML;false;toString;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;JSONObject;(JSONObject,String[]);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(JSONObject,String[]);;Argument[1].ArrayElement;Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(JSONTokener);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(Map);;Argument[0].MapKey;Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(Map);;Argument[0].MapValue;Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(Object);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(Object,String[]);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(Object,String[]);;Argument[1].ArrayElement;Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(String);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;JSONObject;(String,Locale);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;accumulate;;;Argument[0..1];Argument[-1];taint",
"org.json;JSONObject;false;accumulate;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;append;;;Argument[0..1];Argument[-1];taint",
"org.json;JSONObject;false;append;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;doubleToString;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;true;entrySet;;;Argument[-1];ReturnValue.Element;taint",
"org.json;JSONObject;false;get;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getBigDecimal;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getBigInteger;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getBoolean;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getDouble;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getEnum;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getFloat;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getInt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getJSONArray;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getJSONObject;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getLong;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getNames;;;Argument[0];ReturnValue.ArrayElement;taint",
"org.json;JSONObject;false;getNumber;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;getString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;increment;;;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;increment;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;keys;;;Argument[-1];ReturnValue.Element;taint",
"org.json;JSONObject;false;keySet;;;Argument[-1];ReturnValue.Element;taint",
"org.json;JSONObject;false;names;;;Argument[-1];ReturnValue;taint", // Returns a JSONArray, hence this has no Element qualifier or similar
"org.json;JSONObject;false;numberToString;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;opt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optBigDecimal;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optBigInteger;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optBoolean;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optDouble;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optEnum;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optFloat;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optInt;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optJSONArray;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optJSONObject;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optLong;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optNumber;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optQuery;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;optString;;;Argument[-1];ReturnValue;taint",
// Default values that may be returned by the `opt*` methods above:
"org.json;JSONObject;false;optBigDecimal;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optBigInteger;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optBoolean;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optDouble;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optEnum;;;Argument[2];ReturnValue;value",
"org.json;JSONObject;false;optFloat;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optInt;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optLong;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optNumber;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;optString;;;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;put;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;put;(String,boolean);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Collection);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,double);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,float);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,int);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,long);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Map);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Object);;Argument[0];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,boolean);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Collection);;Argument[1].Element;Argument[-1];taint",
"org.json;JSONObject;false;put;(String,double);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,float);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,int);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,long);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Map);;Argument[1].MapKey;Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Map);;Argument[1].MapValue;Argument[-1];taint",
"org.json;JSONObject;false;put;(String,Object);;Argument[1];Argument[-1];taint",
"org.json;JSONObject;false;putOnce;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;putOnce;;;Argument[0..1];Argument[-1];taint",
"org.json;JSONObject;false;putOpt;;;Argument[-1];ReturnValue;value",
"org.json;JSONObject;false;putOpt;;;Argument[0..1];Argument[-1];taint",
"org.json;JSONObject;false;query;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;quote;(String);;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;quote;(String,Writer);;Argument[0];Argument[1];taint",
"org.json;JSONObject;false;quote;(String,Writer);;Argument[1];ReturnValue;value",
"org.json;JSONObject;false;remove;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;stringToValue;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;toJSONArray;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;toMap;;;Argument[-1];ReturnValue.MapKey;taint",
"org.json;JSONObject;false;toMap;;;Argument[-1];ReturnValue.MapValue;taint",
"org.json;JSONObject;false;toString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONObject;false;valueToString;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;wrap;;;Argument[0];ReturnValue;taint",
"org.json;JSONObject;false;write;;;Argument[-1];Argument[0];taint",
"org.json;JSONObject;false;write;;;Argument[0];ReturnValue;value",
"org.json;JSONPointer;false;JSONPointer;(List);;Argument[0].Element;Argument[-1];taint",
"org.json;JSONPointer;false;JSONPointer;(String);;Argument[0];Argument[-1];taint",
"org.json;JSONPointer;false;queryFrom;;;Argument[0];ReturnValue;taint",
"org.json;JSONPointer;false;toString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONPointer;false;toURIFragment;;;Argument[-1];ReturnValue;taint",
"org.json;JSONPointer$Builder;false;append;;;Argument[0];Argument[-1];taint",
"org.json;JSONPointer$Builder;false;append;;;Argument[-1];ReturnValue;value",
"org.json;JSONPointer$Builder;false;build;;;Argument[-1];ReturnValue;taint",
"org.json;JSONStringer;false;toString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;JSONTokener;;;Argument[0];Argument[-1];taint",
"org.json;JSONTokener;true;next;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;nextClean;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;nextString;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;nextTo;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;nextValue;;;Argument[-1];ReturnValue;taint",
"org.json;JSONTokener;true;syntaxError;;;Argument[0..1];ReturnValue;taint",
"org.json;JSONTokener;true;toString;;;Argument[-1];ReturnValue;taint",
// The following model doesn't work yet due to lack of support for reverse taint flow:
"org.json;JSONWriter;true;JSONWriter;;;Argument[-1];Argument[0];taint",
"org.json;JSONWriter;true;key;;;Argument[0];Argument[-1];taint",
"org.json;JSONWriter;true;value;;;Argument[0];Argument[-1];taint",
"org.json;JSONWriter;true;valueToString;;;Argument[0];ReturnValue;taint",
"org.json;JSONWriter;true;array;;;Argument[-1];ReturnValue;value",
"org.json;JSONWriter;true;endArray;;;Argument[-1];ReturnValue;value",
"org.json;JSONWriter;true;endObject;;;Argument[-1];ReturnValue;value",
"org.json;JSONWriter;true;key;;;Argument[-1];ReturnValue;value",
"org.json;JSONWriter;true;object;;;Argument[-1];ReturnValue;value",
"org.json;JSONWriter;true;value;;;Argument[-1];ReturnValue;value",
"org.json;Property;false;toJSONObject;;;Argument[0].MapKey;ReturnValue;taint",
"org.json;Property;false;toJSONObject;;;Argument[0].MapValue;ReturnValue;taint",
"org.json;Property;false;toProperties;;;Argument[0];ReturnValue.MapKey;taint",
"org.json;Property;false;toProperties;;;Argument[0];ReturnValue.MapValue;taint",
"org.json;XML;false;escape;;;Argument[0];ReturnValue;taint",
"org.json;XML;false;stringToValue;;;Argument[0];ReturnValue;taint",
"org.json;XML;false;toJSONObject;;;Argument[0];ReturnValue;taint",
"org.json;XML;false;toString;;;Argument[0..1];ReturnValue;taint",
"org.json;XML;false;unescape;;;Argument[0];ReturnValue;taint",
"org.json;XMLTokener;false;XMLTokener;;;Argument[0];Argument[-1];taint",
"org.json;XMLTokener;false;nextCDATA;;;Argument[-1];ReturnValue;taint",
"org.json;XMLTokener;false;nextContent;;;Argument[-1];ReturnValue;taint",
"org.json;XMLTokener;false;nextEntity;;;Argument[-1];ReturnValue;taint",
"org.json;XMLTokener;false;nextMeta;;;Argument[-1];ReturnValue;taint",
"org.json;XMLTokener;false;nextToken;;;Argument[-1];ReturnValue;taint"
]
}
}