RFR: 8242882: opening jar file with large manifest might throw NegativeArraySizeException [v3]
Lance Andersen
lancea at openjdk.java.net
Thu Oct 8 10:35:45 UTC 2020
On Thu, 1 Oct 2020 14:42:21 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
>> Can I please get a review and a sponsor for a fix for https://bugs.openjdk.java.net/browse/JDK-8242882?
>>
>> As noted in that JBS issue, if the size of the Manifest entry in the jar happens to be very large (such that it exceeds
>> the `Integer.MAX_VALUE`), then the current code in `JarFile#getBytes` can lead to a `NegativeArraySizeException`. This
>> is due to the: if (len != -1 && len <= 65535) block which evaluates to `true` when the size of the manifest entry is
>> larger than `Integer.MAX_VALUE`. As a result, this then ends up calling the code which can lead to the
>> `NegativeArraySizeException`. The commit in this PR fixes that issue by changing those `if/else` blocks to prevent
>> this issue and instead use a code path that leads to the `InputStream#readAllBytes()` which internally has the
>> necessary checks to throw the expected `OutOfMemoryError`. This commit also includes a jtreg test case which
>> reproduces the issue and verifies the fix.
>
> Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:
>
> Second round of review comments addressed
Hi Jaikiran,
Yes I think you are OK to move forward with the integration,
-------------
Marked as reviewed by lancea (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/323
More information about the security-dev
mailing list