Hello All,
Please review the following fix in JDK12:
Bug : https://bugs.openjdk.java.net/browse/JDK-8211422
<https://bugs.openjdk.java.net/browse/JDK-8211422>
Webrev: http://cr.openjdk.java.net/~jdv/8211422/webrev.00/
<http://cr.openjdk.java.net/~jdv/8211422/webrev.00/>
Issue : When we try to read PNG image with corrupt/no 4 byte CRC data for IEND
chunk we throw IIOException. We see this issue only after JDK-8164971
<https://bugs.openjdk.java.net/browse/JDK-8164971>.
Root cause : In JDK-8164971 <https://bugs.openjdk.java.net/browse/JDK-8164971>
fix we made changes to continue reading metadata until we reach IEND chunk.
Before JDK-8164971 <https://bugs.openjdk.java.net/browse/JDK-8164971> change we
used to stop reading metadata as soon as we hit first IDAT chunk. According to
PNG spec there can be more than one IDAT chunk/ more headers after IDAT chunk.
So we need to read metadata until we hit IEND chunk. But in case of this bug we
have IEND chunk but it has corrupt/no CRC chunk, so we throw
IIOException(According to PNG spec every PNG chunk should contain 4 byte CRC).
But lot of other decoders accept these kind of images which has no CRC chunk
for IEND chunk.
Solution : There is no need to verify CRC for IEND chunk(Chunk data length for
IEND is 0). Stop reading metadata once we hit Chunk type info for IEND chunk.
Thanks,
Jay