[OpenJDK 2D-Dev] [15] RFR JDK-8242557: Add length limit for strings in PNGImageWriter
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Thu Apr 30 10:05:30 UTC 2020
Hi Jay,
>> we will throw exception in case of reader also
But in the fix, only PNGWriter is changed. I did not see in existing
PNGReader any exception being thrown for > 79 bytes. I see in reader, we
have
private void parse_iCCP_chunk(int chunkLength) throws IOException {
String keyword = readNullTerminatedString("ISO-8859-1", 80);
int compressedProfileLength = chunkLength - keyword.length() - 2;
if (compressedProfileLength <= 0) {
throw new IIOException("iCCP chunk length is not proper");
}
so chunkLength can be say, 100, keyWord.lenth = 79 so
compressedProfileLength = 100-79-2=19 so we will not throw IOException.
Am I missing something?
Regards
Prasanta
On 30-Apr-20 3:23 PM, Jayathirth D v wrote:
> Hi Prasanta,
>
> I didnt say reader will decode more than 79 bytes but user might
> expect more than 79 bytes since we allowed more than 79 bytes write.
> While reading non-standard PNG chunks(having greater than 79 bytes
> null terminated string) we will throw exception in case of reader
> also. Its a stream, we will not know the length and we rely completely
> on null termination and we expect it to be spec complaint and not more
> than 79 bytes.
>
> Thanks,
> Jay
>
>> On 30-Apr-2020, at 2:51 PM, Prasanta Sadhukhan
>> <prasanta.sadhukhan at oracle.com
>> <mailto:prasanta.sadhukhan at oracle.com>> wrote:
>>
>> Hi Jay,
>>
>> But why reader will read more than 79 bytes from the chunk..It should
>> also limit it's reading to 1st 79 bytes (if the chunks we get from
>> non-oracle non-standard PNG writer is more than 79bytes) as per spec, no?
>>
>> Regards
>> Prasanta
>> On 30-Apr-20 2:01 PM, Jayathirth D v wrote:
>>> Hi Prasanta,
>>>
>>> Thanks for the review.
>>> If we consume only 79 bytes and continue writing the image, it will
>>> lead to unexpected behaviour when user tries to read the image
>>> expecting longer than 79 string data. Our reader is also tightly
>>> spec compliant for null terminated strings after JDK-8195841
>>> <https://bugs.openjdk.java.net/browse/JDK-8195841> and JDK-8191023
>>> <https://bugs.openjdk.java.net/browse/JDK-8191023>. Its better to be
>>> spec compliant than leaving things open for interpretation.
>>>
>>> Regards,
>>> Jay
>>>
>>>
>>>> On 29-Apr-2020, at 1:22 PM, Prasanta Sadhukhan
>>>> <prasanta.sadhukhan at oracle.com
>>>> <mailto:prasanta.sadhukhan at oracle.com>> wrote:
>>>>
>>>> Hi Jay,
>>>>
>>>> Looks good to me . Although I have a question which is, instead of
>>>> throwing Exception, can we proceed with 1st 79 bytes of these
>>>> chunks and continue?
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 27-Apr-20 10:51 PM, Philip Race wrote:
>>>>> I reviewed http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html
>>>>> and I think you covered all the cases.
>>>>>
>>>>> I also reviewed the reader and it seems we already check only up
>>>>> to 80 chars there.
>>>>>
>>>>> I note we assume the same max length of 80 for the language tag
>>>>> for iTxt.
>>>>> The spec. doesn't specify a limit but I think 80 is more than
>>>>> generous here.
>>>>>
>>>>> +1
>>>>>
>>>>> -phil.
>>>>>
>>>>> On 4/27/20, 9:59 AM, Jayathirth D v wrote:
>>>>>> Hello All,
>>>>>>
>>>>>> Please review the following fix for JDK 15:
>>>>>>
>>>>>> Bug : https://bugs.openjdk.java.net/browse/JDK-8242557
>>>>>> Webrev : http://cr.openjdk.java.net/~jdv/8242557/webrev.00/
>>>>>> <http://cr.openjdk.java.net/%7Ejdv/8242557/webrev.00/>
>>>>>>
>>>>>> Issue : PNG specification restricts length of strings in some
>>>>>> chunks to
>>>>>> 79(http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html )
>>>>>> excluding null termination. But our writer implementation has no
>>>>>> such check.
>>>>>> Solution : Add checks in different chunks where there must be
>>>>>> restrictions.
>>>>>>
>>>>>> Thanks,
>>>>>> Jay
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20200430/cb12b1da/attachment-0001.htm>
More information about the 2d-dev
mailing list