On Fri, 18 Oct 2024 13:24:08 GMT, Eirik Bjørsnøs <eir...@openjdk.org> wrote:

>> Lance Andersen has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Added additional validation to ZipEntry
>
> src/java.base/share/classes/java/util/zip/ZipEntry.java line 106:
> 
>> 104:      * @throws NullPointerException if the entry name is null
>> 105:      * @throws IllegalArgumentException if the combined length of the 
>> entry name
>> 106:      * and {@linkplain #CENHDR CEN Header size} exceeds 65,535 bytes.
> 
> English is not my native language, but should 'CEN header size" be preceded 
> by the definite article "the", here and in setExtra/setComment ?

Not really needed but added anyways

> src/java.base/share/classes/java/util/zip/ZipEntry.java line 652:
> 
>> 650:      * @param comment the comment string
>> 651:      * @throws IllegalArgumentException if the combined length
>> 652:      * of the specified entry comment, {@linkplain #getName() entry 
>> name},
> 
> 'entry name' is preceded by the definite article 'the' in `setExtra`, but not 
> here. Would be good to be consistent.

Done

> src/java.base/share/classes/java/util/zip/ZipEntry.java line 723:
> 
>> 721:      * @return true if valid CEN Header size; false otherwise
>> 722:      */
>> 723:     private static  boolean isCENHeaderValid(String name, byte[] extra, 
>> String comment) {
> 
> Extra space before `boolean`
> 
> Suggestion:
> 
>     private static boolean isCENHeaderValid(String name, byte[] extra, String 
> comment) {

fixed

> src/java.base/share/classes/java/util/zip/ZipEntry.java line 726:
> 
>> 724:         int clen = comment == null ? 0 : comment.length();
>> 725:         int elen = extra == null ? 0 : extra.length;
>> 726:         int headerSize = CENHDR + name.length() + clen + elen;
> 
> `headerSize` may overflow `int`, here and in `ZipOutputStream`

Changed to 
`long headerSize = (long)CENHDR + name.length() + clen + elen;`

> src/java.base/share/classes/java/util/zip/ZipEntry.java line 727:
> 
>> 725:         int elen = extra == null ? 0 : extra.length;
>> 726:         int headerSize = CENHDR + name.length() + clen + elen;
>> 727:         return headerSize <= MAX_COMBINED_CEN_HEADER_SIZE ? true : 
>> false;
> 
> Unless this was a stylistic choice, this might be simpler:
> 
> Suggestion:
> 
>         return headerSize <= MAX_COMBINED_CEN_HEADER_SIZE;

done

> src/java.base/share/classes/java/util/zip/ZipOutputStream.java line 268:
> 
>> 266:         // should not exceed 65,535 bytes per the PKWare APP.NOTE
>> 267:         // 4.4.10, 4.4.11, & 4.4.12.
>> 268:         int clen = e.comment == null ? 0 : e.comment.length();
> 
> If `ZipEntry.isCENHeaderValid` was package-protected, it seems you could use 
> it from here, like:
> 
> `ZipEntry.isCENHeaderValid(e.name, e.extra, e.comment)`

done

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806507539
PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806507648
PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806509705
PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806509453
PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806508512
PR Review Comment: https://git.openjdk.org/jdk/pull/21544#discussion_r1806507936

Reply via email to