Please review this cleanup PR which makes `ZipFile.Source.initCEN` not include 
the 22-byte trailing`END` header when reading the `CEN` section of the ZIP file.

The reading of the END header was probably brought over from native code with 
the transition to Java in JDK 9.

In the current JDK, the END header is unused. This needlessly complicates 
multiple code paths accessing the array since they must account for the 
trailing END record when calculating the end of CEN position.

Additionally, the enforcement of the maximum CEN size limit is currently off by 
one. It allows the construction of a byte array of size `Integer.MAX_VALUE - 
1`, but this size is not supported by OpenJDK. Instead, the maximum CEN limit 
should be such that is does not exceed  `Integer.MAX_VALUE - 2`.

Testing:

The `EndOfCenValidation` test is updated to test the rejection of a CEN of size 
`Integer.MAX_VALUE - 1` as the new minumum rejected CEN size.

The `ZipFileOpen` benchmark seems neutral to this change.

-------------

Commit messages:
 - Do not include the END header when reading the CEN section

Changes: https://git.openjdk.org/jdk/pull/20905/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20905&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8339711
  Stats: 13 lines in 2 files changed: 2 ins; 0 del; 11 mod
  Patch: https://git.openjdk.org/jdk/pull/20905.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20905/head:pull/20905

PR: https://git.openjdk.org/jdk/pull/20905

Reply via email to