You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2021/05/01 16:32:39 UTC

[commons-compress] 01/02: AsiExtraField actually expects quite a few more bytes than it claims

This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git

commit 96317153c10f6358877729672fc5a221055a0c31
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Sat May 1 18:26:09 2021 +0200

    AsiExtraField actually expects quite a few more bytes than it claims
---
 .../org/apache/commons/compress/archivers/zip/AsiExtraField.java | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/AsiExtraField.java b/src/main/java/org/apache/commons/compress/archivers/zip/AsiExtraField.java
index 98194cd..fa6c864 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/AsiExtraField.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/AsiExtraField.java
@@ -21,6 +21,9 @@ package org.apache.commons.compress.archivers.zip;
 import java.util.zip.CRC32;
 import java.util.zip.ZipException;
 
+import static org.apache.commons.compress.archivers.zip.ZipConstants.SHORT;
+import static org.apache.commons.compress.archivers.zip.ZipConstants.WORD;
+
 /**
  * Adds Unix file permission and UID/GID fields as well as symbolic
  * link handling.
@@ -52,7 +55,7 @@ import java.util.zip.ZipException;
 public class AsiExtraField implements ZipExtraField, UnixStat, Cloneable {
 
     private static final ZipShort HEADER_ID = new ZipShort(0x756E);
-    private static final int      WORD = 4;
+    private static final int      MIN_SIZE = WORD + SHORT + WORD + SHORT + SHORT;
     /**
      * Standard Unix stat(2) file mode.
      */
@@ -266,9 +269,9 @@ public class AsiExtraField implements ZipExtraField, UnixStat, Cloneable {
     @Override
     public void parseFromLocalFileData(final byte[] data, final int offset, final int length)
         throws ZipException {
-        if (length < WORD) {
+        if (length < MIN_SIZE) {
             throw new ZipException("The length is too short, only "
-                    + length + " bytes, expected at least " + WORD);
+                    + length + " bytes, expected at least " + MIN_SIZE);
         }
 
         final long givenChecksum = ZipLong.getValue(data, offset);