Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gson/src/main/java/com/google/gson/Gson.java
Original file line number Diff line number Diff line change
Expand Up @@ -1195,7 +1195,7 @@ public <T> T fromJson(JsonElement json, TypeToken<T> typeOfT) throws JsonSyntaxE

private static void assertFullConsumption(Object obj, JsonReader reader) {
try {
if (obj != null && reader.peek() != JsonToken.END_DOCUMENT) {
if (obj == null || reader.peek() != JsonToken.END_DOCUMENT) {
throw new JsonSyntaxException("JSON document was not fully consumed.");
}
} catch (MalformedJsonException e) {
Expand Down
2 changes: 1 addition & 1 deletion gson/src/main/java/com/google/gson/JsonParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public static JsonElement parseReader(Reader reader) throws JsonIOException, Jso
try {
JsonReader jsonReader = new JsonReader(reader);
JsonElement element = parseReader(jsonReader);
if (!element.isJsonNull() && jsonReader.peek() != JsonToken.END_DOCUMENT) {
if (jsonReader.peek() != JsonToken.END_DOCUMENT) {
throw new JsonSyntaxException("Did not consume the entire document.");
}
return element;
Expand Down
15 changes: 15 additions & 0 deletions gson/src/test/java/com/google/gson/JsonParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,4 +195,19 @@ public void testStrict() {
// Original strictness was kept
assertThat(reader.getStrictness()).isEqualTo(strictness);
}

// Tests for https://github.com/google/gson/issues/3008 - trailing data after top-level null
@Test
public void testParseTrailingDataAfterNull() {
assertThrows(JsonSyntaxException.class, () -> JsonParser.parseString("null trailing"));
assertThrows(JsonSyntaxException.class, () -> JsonParser.parseString("nulltrailing"));
assertThrows(JsonSyntaxException.class, () -> JsonParser.parseString(" null extra"));
}

@Test
public void testFromJsonTrailingDataAfterNull() {
Gson gson = new Gson();
StringReader reader = new StringReader("null trailing");
assertThrows(JsonSyntaxException.class, () -> gson.fromJson(reader, String.class));
}
}
Loading