Hello all

Invoking ImageReaderSpi.canDecodeInput(Object) with stream having less that 8 bytes causes an EOFException to be throw, while the expected behavior would be for the method to return false. This is caused by BMP, WBMP, GIF, PNG and TIFF reader implementations which assume that those bytes always exist and do not check EOF conditions. The JPEG reader is not impacted.

I have prepared a patch together with a test that 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.

The patch together with the tests are at [1]. Before to submit a pull request to JDK repository, if I remember correctly from my previous contribution I think that we need to fill a bug report on JIRA but it can not be done by myself. Can someone provides some guidance about the process and things that need to be changed in the proposed patch?

    Thanks,

        Martin

[1]https://github.com/Geomatys/jdk/commit/c996e83d5899b7ead0f8837aaea4cf991687a20e

Reply via email to