diff --git a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java index 45f9536b54..d4bed3556e 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java +++ b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java @@ -345,6 +345,10 @@ public AtomicIntegerArray read(JsonReader in) throws IOException { in.beginArray(); while (in.hasNext()) { try { + if (in.peek() == JsonToken.NULL) { + throw new JsonSyntaxException( + "null is not a valid AtomicIntegerArray element; at path " + in.getPath()); + } int integer = in.nextInt(); list.add(integer); } catch (NumberFormatException e) { diff --git a/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java b/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java index a934d585b3..7a49a793c9 100644 --- a/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java +++ b/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java @@ -125,4 +125,14 @@ public void testAtomicLongArrayWithNullElement() { .hasMessageThat() .isEqualTo("null is not a valid AtomicLongArray element; at path $[1]"); } + + @Test + public void testAtomicIntegerArrayWithNullElement() { + JsonSyntaxException e = + assertThrows( + JsonSyntaxException.class, () -> gson.fromJson("[1,null,3]", AtomicIntegerArray.class)); + assertThat(e) + .hasMessageThat() + .isEqualTo("null is not a valid AtomicIntegerArray element; at path $[1]"); + } }