On Mon, 23 May 2022 08:09:20 GMT, Martin Desruisseaux <d...@openjdk.java.net> 
wrote:

>> Invoking `ImageReaderSpi.canDecodeInput(Object)` with a stream having less 
>> than 8 bytes causes an `EOFException` to be thrown instead of returning 
>> `false`. This is caused by BMP, WBMP, GIF, PNG and TIFF reader 
>> implementations assuming that those bytes always exist and not checking EOF 
>> conditions. The JPEG reader is not impacted.
>> 
>> The `CanDecodeTest` class in this pull request reproduces the problem and 
>> verifies that the patch solves it. The changes in `canDecodeInput(Object)` 
>> method bodies are:
>> 
>> * Use `ImageInputStream.read()` instead of `readByte()` and check for -1 
>> (EOF) return value.
>> * Replace `ImageInputStream.readFully(byte[])` calls by a private 
>> `tryReadFully` method.
>
> Martin Desruisseaux has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Test all plugins, not only "BMP".

src/java.desktop/share/classes/com/sun/imageio/plugins/common/ReaderUtil.java 
line 284:

> 282:         } while (offset < b.length);
> 283:         return true;
> 284:     }

Any reason not to catch EOFException exception in the exceptional situation?

-------------

PR: https://git.openjdk.java.net/jdk/pull/8700

Reply via email to