+1

Thanks,
Krishna

-----Original Message-----
From: Jayathirth D V 
Sent: Tuesday, November 20, 2018 1:59 PM
To: 2d-dev <2d-dev@openjdk.java.net>
Subject: Re: [OpenJDK 2D-Dev] [12] RFR JDK-8211795: 
ArrayIndexOutOfBoundsException in PNGImageReader after JDK-6788458

Thanks Sergey for the review.
I need one more review.
Please review the latest webrev:
http://cr.openjdk.java.net/~jdv/8211795/webrev.01/ 

Thanks,
Jay

-----Original Message-----
From: Sergey Bylokhov 
Sent: Saturday, November 17, 2018 3:35 AM
To: Jayathirth D V; 2d-dev
Subject: Re: [OpenJDK 2D-Dev] [12] RFR JDK-8211795: 
ArrayIndexOutOfBoundsException in PNGImageReader after JDK-6788458

Looks fine.

On 16/11/2018 02:16, Jayathirth D V wrote:
> Hi Sergey,
> 
> As discussed offline I did more analysis on whether we can use common 
> variable to determine number of bands. Since we have "outputSampleSize.length 
> - 1" and "inputBands + 1" kind of things.
> 
> Actually scale array will be used on input data(ps[]), so we should use input 
> bands value to create and use scale array. Before JDK-6788458 there was no 
> difference between input bands and output bands so we didn't see any issue. 
> But after JDK-6788458 number of bands data is different between input and 
> output data for PNG_COLOR_RGB/GRAY having tRNS chunk.
> 
> So I have made change to use inputBands data for creation and use of scale 
> array. Ran complete imageio jtreg and JCK tests there are no failures.
> Please find updated webrev for review:
> http://cr.openjdk.java.net/~jdv/8211795/webrev.01/
> 
> Thanks,
> Jay
> 
> -----Original Message-----
> From: Jayathirth D V
> Sent: Wednesday, November 14, 2018 1:09 PM
> To: Sergey Bylokhov; 2d-dev
> Subject: RE: [OpenJDK 2D-Dev] [12] RFR JDK-8211795: 
> ArrayIndexOutOfBoundsException in PNGImageReader after JDK-6788458
> 
> Hi Sergey,
> 
> Thanks for the review.
> 
> As you pointed out, yes the AIOOB is happening for ps[b]. I have updated the 
> analysis in JBS bug also.
> 
> Basically the calculation of numBands is not proper because we take numBands 
> value from destination image. This destination image will have extra alpha 
> channel for Gray or RGB input data(ps[]) which will throw AIOOB.
> 
> So we need to update the logic of how we calculate numBands different for PNG 
> Gray/RGB image havng tRNS chunk. Fortunately, webrev.00 is actually doing 
> this job.
> 
> Regarding whether we need to change scale array logic : We expect first 3 
> channel to be RGB and first channel to be Gray for PNG_COLOR_RGB and 
> PNG_COLOR_GRAY respectively. So just updating numBands information will 
> create proper scale array. So there is no need to change the scale array 
> logic.
> 
> History JDK-6788458 : Toolkit was able to show transparent color information 
> for RGB/Gray PNG image when it has tRNS chunk, but ImageIO didn't support it. 
> To use tRNS data and show transparent color in output image we needed to add 
> extra alpha channel for PNG RGB/Gray image with tRNS chunk. But fix present 
> in JDK-6788458 didn't handle the case where bitDepth adjustment is needed and 
> we are using band information from output image(having extra alpha channel) 
> on input image which has no alpha channel. Change in numBands logic for this 
> bug fixes that issue.
> 
> 
> Thanks,
> Jay
> 
> -----Original Message-----
> From: Sergey Bylokhov
> Sent: Wednesday, November 14, 2018 4:07 AM
> To: Jayathirth D V; 2d-dev
> Subject: Re: [OpenJDK 2D-Dev] [12] RFR JDK-8211795: 
> ArrayIndexOutOfBoundsException in PNGImageReader after JDK-6788458
> 
> Hi, Jay.
> 
> Can you please provide some more detail about this bug.
> 
>> Root cause : In JDK-6788458 we are adding extra alpha channel for 
>> destination whenever we have tRNS chunk. But the number of bands in bitDepth 
>> scale array was not changed when we have tRNS chunk. This is causing 
>> ArrayIndexOutOfBoundsException for scale array.
> 
> As far as I understand the AIOOB is occurred when we access ps[b] at line 
> 1308 not when we access the scale array, because the scale array is created 
> as "scale = new int[numBands][]".  So maybe numBands should depends on the 
> passRow? or the creation of scale[][xxx] should be updated?
> BTW this code uses +1/-1 in a lot of places already, and it is not always 
> clear why.
> 
> 


-- 
Best regards, Sergey.

Reply via email to