diff --git a/src/read.rs b/src/read.rs index b9b8247b..b3d5897a 100644 --- a/src/read.rs +++ b/src/read.rs @@ -8,7 +8,7 @@ use crate::crc32::Crc32Reader; use crate::extra_fields::{ExtendedTimestamp, ExtraField}; use crate::read::zip_archive::{Shared, SharedBuilder}; use crate::result::{ZipError, ZipResult}; -use crate::spec::{self, FixedSizeBlock, Zip32CentralDirectoryEnd}; +use crate::spec::{self, FixedSizeBlock, Zip32CentralDirectoryEnd, ZIP64_ENTRY_THR}; use crate::types::{ AesMode, AesVendorVersion, DateTime, System, ZipCentralEntryBlock, ZipFileData, ZipLocalEntryBlock, @@ -772,7 +772,8 @@ impl ZipArchive { } Err(e) => invalid_errors.push(e), Ok(o) => { - if o.files.len() >= footer.number_of_files as usize { + if o.files.len() == footer.number_of_files as usize + || footer.number_of_files == ZIP64_ENTRY_THR as u16 { ok_results.push((footer.clone(), o)) } else { invalid_errors.push(InvalidArchive("wrong number of files"))