Hi Sergey, Could you please provide your inputs and review the fix.
Thanks, Jay -----Original Message----- From: Jayathirth D V Sent: Thursday, December 14, 2017 9:47 AM To: Sergey Bylokhov; Prahalad Kumar Narayanan; 2d-dev Subject: RE: [OpenJDK 2D-Dev] [10] RFR JDK-8190997: PNGImageReader throws NullPointerException when PLTE section is missing Hello Sergey, Thanks for your inputs. Comparison using == just comes out of me because of my coding style. Since the variable name PLTE_present is self-explanatory that it is of type boolean I also feel from verbose perspective we should use ! operator. I have updated the code to reflect the same. Apart from verbose perspective is there anything different in Java between using == & ! in this case. Please provide your inputs as it would be helpful in future changes. Please find updated webrev for review: http://cr.openjdk.java.net/~jdv/8190997/webrev.02/ Thanks, Jay -----Original Message----- From: Sergey Bylokhov Sent: Wednesday, December 13, 2017 9:35 PM To: Jayathirth D V; Prahalad Kumar Narayanan; 2d-dev Subject: Re: [OpenJDK 2D-Dev] [10] RFR JDK-8190997: PNGImageReader throws NullPointerException when PLTE section is missing It looks fine, but I wonder why metadata.PLTE_present == false is used instead of !metadata.PLTE_present On 13/12/2017 02:50, Jayathirth D V wrote: > Hello Prahalad, > > Thanks for your inputs. > I have updated the code based on your inputs. > > Please find updated webrev for review: > http://cr.openjdk.java.net/~jdv/8190997/webrev.01/ > > Thanks, > Jay > > -----Original Message----- > From: Prahalad Kumar Narayanan > Sent: Wednesday, December 13, 2017 3:29 PM > To: Jayathirth D V; 2d-dev > Subject: RE: [OpenJDK 2D-Dev] [10] RFR JDK-8190997: PNGImageReader throws > NullPointerException when PLTE section is missing > > Hello Jay > > I looked into the changes. > The logic to check the presence of PLTE chunk is correct. > > Few minor changes > . The if condition to check whether PLTE chunk exists would get executed > every time an IDAT chunk is encountered. > . For png images with multiple IDAT chunks, this is a repeated check > and can be avoided. > . You can move the if condition within the if block that stores > location of 1st IDAT chunk. > > . Secondly, the wording within the IIOException can be changed. > . PNG specification mentions IHDR chunk as Image Header and this is > separate from PLTE chunk. > . So you could rephrase "PNG Header doesn't contain required PLTE > chunk" as "PNG image doesn't contain required PLTE chunk" > > Thank you > Have a good day > > Prahalad N. > > ----- Original Message ----- > From: Jayathirth D V > Sent: Wednesday, December 13, 2017 3:02 PM > To: 2d-dev > Subject: [OpenJDK 2D-Dev] [10] RFR JDK-8190997: PNGImageReader throws > NullPointerException when PLTE section is missing > > Hello All, > > Please review the following fix in JDK10 : > > Bug : https://bugs.openjdk.java.net/browse/JDK-8190997 > Webrev : http://cr.openjdk.java.net/~jdv/8190997/webrev.00/ > > Issue : When we try to read PNG image with color type as PNG_COLOR_PALETTE in > IHDR header but missing the required PLTE chunk we throw NullPointerException. > > Root cause : We finish reading metadata but when we try to read image > information and access palette related data it throws NPE as palette related > data is not initialized/not present. > > Solution : PNG specification mandates that if color type present in IHDR is > PNG_COLOR_PALETTE(type 3), PLTE chunk should appear before the first IDAT > chunk. So while reading metadata itself we should verify the same and if > required PLTE chunk is absent we should throw proper IIOException instead of > allowing the code to continue further and throw NPE while trying to access > palette information. > > Thanks, > Jay > -- Best regards, Sergey.