[OpenJDK 2D-Dev] Review Request for JDK-8044289 : In ImageIO.read() and write() NPE is not handled properly for stream

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu Mar 17 13:56:44 UTC 2016


On 17.03.16 0:36, Phil Race wrote:
> I don't think that is the actual reason here

But the test doing exactly this thing -> deregister all spi => in this 
case according to specification all related 
methods(read/write/creatImageInputStream/creatImageOutputStream) should 
return null or false.

- it seems likely that there
> was some kind of internal error or bad SPI causing this.
> So throwing an exception seems more appropriate.

the problem was in some of our methods which do not expect null in some 
places(like stream.close() from the bug description).

> And also the bug was originally solely about write(..).
>
> -phil.
>
>
> On 03/16/2016 01:35 PM, Sergey Bylokhov wrote:
>> As far as I understand the createImageInputStream() returns null is
>> this stream is unsupported by current plugins via spi. Probably the
>> read() method should return null too?
>>
>>     /**
>>      * Returns a {@code BufferedImage} as the result of decoding
>>      * a supplied {@code InputStream} with an {@code ImageReader}
>>      * chosen automatically from among those currently registered.
>>      * The {@code InputStream} is wrapped in an
>>      * {@code ImageInputStream}.  If no registered
>>      * {@code ImageReader} claims to be able to read the
>>      * resulting stream, {@code null} is returned.
>>      *
>> .......
>>      * @return a {@code BufferedImage} containing the decoded
>>      * contents of the input, or {@code null}.
>>      */
>>     public static BufferedImage read(InputStream input) throws
>> IOException
>>
>>
>> On 16.03.16 20:29, Philip Race wrote:
>>> The test writes out into "test.src".
>>> I believe that you should treat that as a "read-only" location.
>>> Write to a tempfile (File.createTempFile()) or TESTCLASSES.
>>>
>>> -phil.
>>>
>>> On 3/15/16, 10:50 PM, Jayathirth D V wrote:
>>>>
>>>> Hi Phil,All
>>>>
>>>> _Please review the following fix in JDK9:_
>>>>
>>>> __
>>>>
>>>> Bug : https://bugs.openjdk.java.net/browse/JDK-8044289
>>>>
>>>> Webrev : http://cr.openjdk.java.net/~jdv/8044289/webrev.00/
>>>> <http://cr.openjdk.java.net/%7Ejdv/8044289/webrev.00/>
>>>>
>>>> Issue : When createImageInputStream() or createImageOutputStream
>>>> returns null in ImageIO.read() or ImageIO.write() we are seeing NPE as
>>>> it stream is used further without null check.
>>>>
>>>> Root cause : “stream” is used without checking whether it is null or
>>>> not.
>>>>
>>>> Solution : Handle null pointer of stream and throw IIOException.
>>>>
>>>> Test case contains all possible scenarios where
>>>> createImageInputStream() or createImageOutputStream can return null.
>>>>
>>>> Thanks,
>>>>
>>>> Jay
>>>>
>>
>>
>


-- 
Best regards, Sergey.



More information about the 2d-dev mailing list