Please review this PR which brings `jdk.nio.zipfs.ZipFileSystem` `END` header 
validation into behavioral alignment with the corresponding checks in 
`java.util.zip.ZipFile`.

This brings two validation checks over to `ZipFileSystem`:

* Rejection of END headers with a CEN size larger than 
`ArraysSupport.SOFT_MAX_ARRAY_LENGTH` (JDK-8272746)
* Rejection of END headers with a total entry count which cannot fit within the 
CEN byte array  (JDK-8341625)

The test `test/jdk/java/util/zip/ZipFile/EndOfCenValidation.java` is updated to 
to verify that ZIP files  rejected by the `ZipFile` constructor are now also 
rejected by `ZipFileSystem.newFileSystem`.

Tangentially, `ZipFileSystem.findEND` is updated to make `END.centot` a `long` 
instead of an `int`. This avoids a narrowing conversion which otherwise 
prevents validating a larger than Integer.MAX_VALUE number of CEN entries.  
Similar adjustments to `ZipFile` was done in JDK-8341625.

`ZipFile.Source.initCEN` is updated with some minor code style / code comment 
changes to make side-by-side diffs less noisy. Additionally, validated 
`end.cenlen` and `end.centot` values are now consistently converted to `int` 
using `Math.toIntExact`.

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

Commit messages:
 - Fix merge commit
 - Merge branch 'master' into zipfs-endofcen-validation
 - Realign comment whitespace
 - Use Math.toIntExact once in End::write
 - Align ZipFileSystem END header validation with the ZipFile validation

Changes: https://git.openjdk.org/jdk/pull/29747/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29747&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377992
  Stats: 85 lines in 3 files changed: 42 ins; 16 del; 27 mod
  Patch: https://git.openjdk.org/jdk/pull/29747.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29747/head:pull/29747

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

Reply via email to