[13] RFR 8217969, 8218265: Base64.Decoder.decode methods ... and java/util/Base64/TestEncodingDecodingLength.java failing
Nishit Jain
nishit.jain at oracle.com
Tue Feb 5 09:23:23 UTC 2019
Thanks Roger, Naoto for reviewingthe changes
Updated the webrev
- Used ByteBuffer.wrap(inputBytes) instead of ByteBuffer.allocate(size)
- Added Decoder.decode(ByteBuffer)method test. (line 58)
http://cr.openjdk.java.net/~nishjain/8217969_8218265/webrev.01/
Regards,
Nishit Jain
On 05-02-2019 00:03, Naoto Sato wrote:
> +1
>
> Naoto
>
> On 2/4/19 10:18 AM, Roger Riggs wrote:
>> Hi Nishit,
>>
>> Looks fine.
>>
>> Thanks for fixing the test and improving the implementation.
>>
>> The test could save one 2G allocation by using
>> ByteBuffer.wrap(inputBytes)
>> instead of ByteBuffer.allocate(size).
>>
>> Thanks, Roger
>>
>>
>>
>> On 02/04/2019 10:31 AM, Nishit Jain wrote:
>>> Hi,
>>>
>>> Please review the below fix for 8217969 and 8218265
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8217969
>>> https://bugs.openjdk.java.net/browse/JDK-8218265
>>>
>>> Webrev: http://cr.openjdk.java.net/~nishjain/8217969_8218265/webrev.00/
>>>
>>> Issue: Fix for 8210583 changed the Base64.Decoder.decode to throw
>>> OOME when an integer value overflows, which is an intermediate
>>> value, not the final value, the final value is always less than
>>> Integer.MAX_VALUE. Also, the test case written for 8210583, fails on
>>> certain platforms and throws "OutOfMemoryError: Requested array size
>>> exceeds VM limit ", due to the array size of length
>>> Integer.MAX_VALUE - 2.
>>>
>>> Fix: Handled the integer overflow by storing the intermediate value
>>> as "long" and converting the final value as integer. Also, updating
>>> the test case input array length to Integer.MAX_VALUE - 8, since
>>> MAX_VALUE - 2 was used only to test the overflow condition in
>>> Decoder.decode() which is no longer there.
>>>
>>> Regards,
>>> Nishit Jain
>>
More information about the core-libs-dev
mailing list