package generatedtest; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.Reader; import java.io.Writer; import java.lang.reflect.Type; import java.util.List; import java.util.Map; import java.util.Set; // Test case generated by GenerateFlowTestCase.ql public class Test { K getMapKey(Map map) { return map.keySet().iterator().next(); } T getElement(Iterable it) { return it.iterator().next(); } V getMapValue(Map map) { return map.get(null); } String getMapKeyDefault(JsonObject container) { return container.keySet().iterator().next(); } K getMapKeyDefault(Map.Entry container) { return container.getKey(); } JsonElement getMapValueDefault(JsonObject container) { return container.get(null); } V getMapValueDefault(Map.Entry container) { return container.getValue(); } JsonArray newWithElementDefault(JsonElement element) { JsonArray a = new JsonArray(); a.add(element); return a; } JsonObject newWithMapKeyDefault(String key) { JsonObject o = new JsonObject(); o.add(key, (JsonElement) null); return o; } JsonObject newWithMapValueDefault(JsonElement element) { JsonObject o = new JsonObject(); o.add(null, element); return o; } Object source() { return null; } void sink(Object o) { } public void test() throws Exception { { // "com.google.gson.stream;JsonReader;false;nextName;;;Argument[this];ReturnValue;taint;manual" String out = null; JsonReader in = (JsonReader)source(); out = in.nextName(); sink(out); // $ hasTaintFlow } { // "com.google.gson.stream;JsonReader;false;nextString;;;Argument[this];ReturnValue;taint;manual" String out = null; JsonReader in = (JsonReader)source(); out = in.nextString(); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; JsonElement in = (JsonElement)source(); Gson instance = null; out = instance.fromJson(in, (Class)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; JsonElement in = (JsonElement)source(); Gson instance = null; out = instance.fromJson(in, (Type)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; JsonElement in = (JsonElement)source(); Gson instance = null; out = instance.fromJson(in, (TypeToken)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; JsonReader in = (JsonReader)source(); Gson instance = null; out = instance.fromJson(in, (Type)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; JsonReader in = (JsonReader)source(); Gson instance = null; out = instance.fromJson(in, (TypeToken)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; Reader in = (Reader)source(); Gson instance = null; out = instance.fromJson(in, (Class)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; Reader in = (Reader)source(); Gson instance = null; out = instance.fromJson(in, (Type)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; Reader in = (Reader)source(); Gson instance = null; out = instance.fromJson(in, (TypeToken)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; String in = (String)source(); Gson instance = null; out = instance.fromJson(in, (Class)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; String in = (String)source(); Gson instance = null; out = instance.fromJson(in, (Type)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" Object out = null; String in = (String)source(); Gson instance = null; out = instance.fromJson(in, (TypeToken)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;newJsonReader;;;Argument[0];ReturnValue;taint;manual" JsonReader out = null; Reader in = (Reader)source(); Gson instance = null; out = instance.newJsonReader(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;newJsonWriter;;;Argument[0];ReturnValue;taint;manual" JsonWriter out = null; Writer in = (Writer)source(); Gson instance = null; out = instance.newJsonWriter(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(JsonElement);;Argument[0];ReturnValue;taint;manual" String out = null; JsonElement in = (JsonElement)source(); Gson instance = null; out = instance.toJson(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(JsonElement,Appendable);;Argument[0];Argument[1];taint;manual" Appendable out = null; JsonElement in = (JsonElement)source(); Gson instance = null; instance.toJson(in, out); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(JsonElement,JsonWriter);;Argument[0];Argument[1];taint;manual" JsonWriter out = null; JsonElement in = (JsonElement)source(); Gson instance = null; instance.toJson(in, out); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(Object);;Argument[0];ReturnValue;taint;manual" String out = null; Object in = (Object)source(); Gson instance = null; out = instance.toJson(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(Object,Appendable);;Argument[0];Argument[1];taint;manual" Appendable out = null; Object in = (Object)source(); Gson instance = null; instance.toJson(in, out); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(Object,Type);;Argument[0];ReturnValue;taint;manual" String out = null; Object in = (Object)source(); Gson instance = null; out = instance.toJson(in, (Type)null); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(Object,Type,Appendable);;Argument[0];Argument[2];taint;manual" Appendable out = null; Object in = (Object)source(); Gson instance = null; instance.toJson(in, (Type)null, out); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJson;(Object,Type,JsonWriter);;Argument[0];Argument[2];taint;manual" JsonWriter out = null; Object in = (Object)source(); Gson instance = null; instance.toJson(in, (Type)null, out); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJsonTree;(Object);;Argument[0];ReturnValue;taint;manual" JsonElement out = null; Object in = (Object)source(); Gson instance = null; out = instance.toJsonTree(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;Gson;false;toJsonTree;(Object,Type);;Argument[0];ReturnValue;taint;manual" JsonElement out = null; Object in = (Object)source(); Gson instance = null; out = instance.toJsonTree(in, null); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonArray;true;add;(Boolean);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Boolean in = (Boolean)source(); out.add(in); sink(getElement(out)); // $ hasTaintFlow } { // "com.google.gson;JsonArray;true;add;(Character);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Character in = (Character)source(); out.add(in); sink(getElement(out)); // $ hasTaintFlow } { // "com.google.gson;JsonArray;true;add;(JsonElement);;Argument[0];Argument[this].Element;value;manual" JsonArray out = null; JsonElement in = (JsonElement)source(); out.add(in); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;add;(Number);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; Number in = (Number)source(); out.add(in); sink(getElement(out)); // $ hasTaintFlow } { // "com.google.gson;JsonArray;true;add;(String);;Argument[0];Argument[this].Element;taint;manual" JsonArray out = null; String in = (String)source(); out.add(in); sink(getElement(out)); // $ hasTaintFlow } { // "com.google.gson;JsonArray;true;addAll;(JsonArray);;Argument[0].Element;Argument[this].Element;value;manual" JsonArray out = null; JsonArray in = newWithElementDefault((JsonElement) source()); out.addAll(in); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;asList;;;Argument[this].Element;ReturnValue.Element;value;manual" List out = null; JsonArray in = newWithElementDefault((JsonElement) source()); out = in.asList(); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;get;;;Argument[this].Element;ReturnValue;value;manual" JsonElement out = null; JsonArray in = newWithElementDefault((JsonElement) source()); out = in.get(0); sink(out); // $ hasValueFlow } { // "com.google.gson;JsonArray;true;set;;;Argument[1];Argument[this].Element;value;manual" JsonArray out = null; JsonElement in = (JsonElement)source(); out.set(0, in); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" byte out = 0; JsonArray in = (JsonArray)source(); out = in.getAsByte(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" byte out = 0; JsonElement in = (JsonElement)source(); out = in.getAsByte(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" byte out = 0; JsonPrimitive in = (JsonPrimitive)source(); out = in.getAsByte(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" char out = 'a'; JsonArray in = (JsonArray)source(); out = in.getAsCharacter(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" char out = 'a'; JsonElement in = (JsonElement)source(); out = in.getAsCharacter(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" char out = 'a'; JsonPrimitive in = (JsonPrimitive)source(); out = in.getAsCharacter(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsJsonArray;();;Argument[this];ReturnValue;taint;manual" JsonArray out = null; JsonElement in = (JsonElement)source(); out = in.getAsJsonArray(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsJsonObject;();;Argument[this];ReturnValue;taint;manual" JsonObject out = null; JsonElement in = (JsonElement)source(); out = in.getAsJsonObject(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsJsonPrimitive;();;Argument[this];ReturnValue;taint;manual" JsonPrimitive out = null; JsonElement in = (JsonElement)source(); out = in.getAsJsonPrimitive(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" String out = null; JsonArray in = (JsonArray)source(); out = in.getAsString(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" String out = null; JsonElement in = (JsonElement)source(); out = in.getAsString(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" String out = null; JsonPrimitive in = (JsonPrimitive)source(); out = in.getAsString(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonElement;true;toString;();;Argument[this];ReturnValue;taint;manual" String out = null; JsonElement in = (JsonElement)source(); out = in.toString(); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonObject;true;add;;;Argument[0];Argument[this].MapKey;value;manual" JsonObject out = null; String in = (String)source(); out.add(in, null); sink(getMapKeyDefault(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;add;;;Argument[1];Argument[this].MapValue;value;manual" JsonObject out = null; JsonElement in = (JsonElement)source(); out.add(null, in); sink(getMapValueDefault(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[0];Argument[this].MapKey;value;manual" JsonObject out = null; String in = (String)source(); out.addProperty(in, (String)null); sink(getMapKeyDefault(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[1];Argument[this].MapValue;taint;manual" JsonObject out = null; String in = (String)source(); out.addProperty((String)null, in); sink(getMapValueDefault(out)); // $ hasTaintFlow } { // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapKey;ReturnValue.MapKey;value;manual" Map out = null; JsonObject in = newWithMapKeyDefault((String) source()); out = in.asMap(); sink(getMapKey(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapValue;ReturnValue.MapValue;value;manual" Map out = null; JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.asMap(); sink(getMapValue(out)); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapKey;ReturnValue.Element.MapKey;value;manual" Set> out = null; JsonObject in = newWithMapKeyDefault((String) source()); out = in.entrySet(); sink(getMapKeyDefault(getElement(out))); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapValue;ReturnValue.Element.MapValue;value;manual" Set> out = null; JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.entrySet(); sink(getMapValueDefault(getElement(out))); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;get;;;Argument[this].MapValue;ReturnValue;value;manual" JsonElement out = null; JsonObject in = newWithMapValueDefault((JsonElement) source()); out = in.get(null); sink(out); // $ hasValueFlow } { // "com.google.gson;JsonObject;true;keySet;;;Argument[this].MapKey;ReturnValue.Element;value;manual" Set out = null; JsonObject in = newWithMapKeyDefault((String) source()); out = in.keySet(); sink(getElement(out)); // $ hasValueFlow } { // "com.google.gson;JsonPrimitive;true;JsonPrimitive;(Character);;Argument[0];Argument[this];taint;manual" JsonPrimitive out = null; Character in = (Character)source(); out = new JsonPrimitive(in); sink(out); // $ hasTaintFlow } { // "com.google.gson;JsonPrimitive;true;JsonPrimitive;(String);;Argument[0];Argument[this];taint;manual" JsonPrimitive out = null; String in = (String)source(); out = new JsonPrimitive(in); sink(out); // $ hasTaintFlow } } }