diff --git a/lib/zip_dirent.c b/lib/zip_dirent.c
index 2bd89bf..52ca9ff 100644
--- a/lib/zip_dirent.c
+++ b/lib/zip_dirent.c
@@ -521,29 +521,56 @@
 	    return -1;
 	}
 
-	if (zde->uncomp_size == ZIP_UINT32_MAX)
+        if (zde->uncomp_size == ZIP_UINT32_MAX) {
 	    zde->uncomp_size = _zip_buffer_get_64(ef_buffer);
+        }
 	else if (local) {
 	    /* From appnote.txt: This entry in the Local header MUST
 	       include BOTH original and compressed file size fields. */
 	    (void)_zip_buffer_skip(ef_buffer, 8); /* error is caught by _zip_buffer_eof() call */
 	}
-	if (zde->comp_size == ZIP_UINT32_MAX)
+        if (zde->comp_size == ZIP_UINT32_MAX) {
 	    zde->comp_size = _zip_buffer_get_64(ef_buffer);
+        }
 	if (!local) {
-	    if (zde->offset == ZIP_UINT32_MAX)
+            if (zde->offset == ZIP_UINT32_MAX) {
 		zde->offset = _zip_buffer_get_64(ef_buffer);
-	    if (zde->disk_number == ZIP_UINT16_MAX)
+            }
+            if (zde->disk_number == ZIP_UINT16_MAX) {
 		zde->disk_number = _zip_buffer_get_32(ef_buffer);
+            }
 	}
 
 	if (!_zip_buffer_eof(ef_buffer)) {
-	    zip_error_set(error, ZIP_ER_INCONS, 0);
-	    _zip_buffer_free(ef_buffer);
-	    if (!from_buffer) {
-		_zip_buffer_free(buffer);
-	    }
-	    return -1;
+            /* accept additional fields if values match */
+            bool ok = true;
+            switch (got_len) {
+                case 28:
+                    _zip_buffer_set_offset(ef_buffer, 24);
+                    if (zde->disk_number != _zip_buffer_get_32(ef_buffer)) {
+                        ok = false;
+                    }
+                    /* fallthrough */
+                case 24:
+                    _zip_buffer_set_offset(ef_buffer, 0);
+                    if ((zde->uncomp_size != _zip_buffer_get_64(ef_buffer))
+                        || (zde->comp_size != _zip_buffer_get_64(ef_buffer))
+                        || (zde->offset != _zip_buffer_get_64(ef_buffer))) {
+                        ok = false;
+                    }
+                    break;
+                    
+                default:
+                    ok = false;
+            }
+            if (!ok) {
+                zip_error_set(error, ZIP_ER_INCONS, 0);
+                _zip_buffer_free(ef_buffer);
+                if (!from_buffer) {
+                    _zip_buffer_free(buffer);
+                }
+                return -1;
+            }
 	}
 	_zip_buffer_free(ef_buffer);
     }
