[13] RFR 8217969, 8218265: Base64.Decoder.decode methods ... and java/util/Base64/TestEncodingDecodingLength.java failing
Naoto Sato
naoto.sato at oracle.com
Mon Feb 4 18:33:54 UTC 2019
+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