diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java b/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java
index 1e0013fdac2..fbcec4843e2 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField.java
@@ -242,7 +242,7 @@ public void parseFromCentralDirectoryData(byte[] buffer, int offset,
* field with knowledge which fields are expected to be there.
*
* <p>All four fields inside the zip64 extended information extra
- * field are optional and only present if their corresponding
+ * field are optional and must only be present if their corresponding
* entry inside the central directory contains the correct magic
* value.</p>
*/
@@ -256,7 +256,7 @@ public void reparseCentralDirectoryData(boolean hasUncompressedSize,
+ (hasCompressedSize ? DWORD : 0)
+ (hasRelativeHeaderOffset ? DWORD : 0)
+ (hasDiskStart ? WORD : 0);
- if (rawCentralDirectoryData.length != expectedLength) {
+ if (rawCentralDirectoryData.length < expectedLength) {
throw new ZipException("central directory zip64 extended"
+ " information extra field's length"
+ " doesn't match central directory"