> 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.

Eirik Bjørsnøs has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains three additional 
commits since the last revision:

 - Merge branch 'master' into zipfile-endhdr
 - Merge branch 'master' into zipfile-endhdr
 - Do not include the END header when reading the CEN section

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/20905/files
  - new: https://git.openjdk.org/jdk/pull/20905/files/f0f78601..97ef7283

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=20905&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20905&range=00-01

  Stats: 32873 lines in 1053 files changed: 19820 ins; 7264 del; 5789 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