Skip to content

Commit c013567

Browse files
committed
Fix JsonArray.addAll model
Properly test JsonArray.add(String) and JsonArray.addAll(JsonArray) as well
1 parent 35b4c43 commit c013567

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

java/ql/lib/ext/com.google.gson.model.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extensions:
3131
- ["com.google.gson", "JsonArray", True, "add", "(JsonElement)", "", "Argument[0]", "Argument[this].Element", "value", "manual"]
3232
- ["com.google.gson", "JsonArray", True, "add", "(Number)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"]
3333
- ["com.google.gson", "JsonArray", True, "add", "(String)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"]
34-
- ["com.google.gson", "JsonArray", True, "add", "(JsonArray)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"]
34+
- ["com.google.gson", "JsonArray", True, "addAll", "(JsonArray)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"]
3535
- ["com.google.gson", "JsonArray", True, "asList", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"]
3636
- ["com.google.gson", "JsonArray", True, "get", "", "", "Argument[this].Element", "ReturnValue", "value", "manual"]
3737
- ["com.google.gson", "JsonArray", True, "set", "", "", "Argument[1]", "Argument[this].Element", "value", "manual"]

java/ql/test/library-tests/frameworks/gson/Test.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -260,23 +260,30 @@ public void test() throws Exception {
260260
sink(getElement(out)); // $ hasTaintFlow
261261
}
262262
{
263-
// "com.google.gson;JsonArray;true;add;(JsonArray);;Argument[0].Element;Argument[this].Element;value;manual"
263+
// "com.google.gson;JsonArray;true;add;(String);;Argument[0];Argument[this].Element;taint;manual"
264264
JsonArray out = null;
265-
JsonElement in = (JsonElement)source();
265+
String in = (String)source();
266266
out.add(in);
267+
sink(getElement(out)); // $ hasTaintFlow
268+
}
269+
{
270+
// "com.google.gson;JsonArray;true;addAll;(JsonArray);;Argument[0].Element;Argument[this].Element;value;manual"
271+
JsonArray out = null;
272+
JsonArray in = newWithElementDefault((JsonElement) source());
273+
out.addAll(in);
267274
sink(getElement(out)); // $ hasValueFlow
268275
}
269276
{
270277
// "com.google.gson;JsonArray;true;asList;;;Argument[this].Element;ReturnValue.Element;value;manual"
271278
List out = null;
272-
JsonArray in = (JsonArray)newWithElementDefault((JsonElement) source());
279+
JsonArray in = newWithElementDefault((JsonElement) source());
273280
out = in.asList();
274281
sink(getElement(out)); // $ hasValueFlow
275282
}
276283
{
277284
// "com.google.gson;JsonArray;true;get;;;Argument[this].Element;ReturnValue;value;manual"
278285
JsonElement out = null;
279-
JsonArray in = (JsonArray)newWithElementDefault((JsonElement) source());
286+
JsonArray in = newWithElementDefault((JsonElement) source());
280287
out = in.get(0);
281288
sink(out); // $ hasValueFlow
282289
}

0 commit comments

Comments
 (0)