Bug fixes: validation was too stringent

This commit is contained in:
Chris Hennick 2023-05-12 08:54:00 -07:00
parent c90a8fd3cf
commit dd83186928
No known key found for this signature in database
GPG key ID: 25653935CC8B6C74

View file

@ -397,19 +397,10 @@ impl<R: Read + Seek> ZipArchive<R> {
} }
}; };
// It has both, so check if the zip64 footer is valid; if not, assume zip32 // It has both, so check if the zip64 footer is valid; if not, assume zip32
if archive_offset_64 < u32::MAX as u64 && archive_offset_64 != archive_offset_32 if directory_start_64 - archive_offset_64 != directory_start_32 - archive_offset_32 {
|| archive_offset_32 != u32::MAX as u64
{
return Ok((archive_offset_32, directory_start_32, number_of_files_32)); return Ok((archive_offset_32, directory_start_32, number_of_files_32));
} }
if directory_start_64 < u32::MAX as u64 && directory_start_64 != directory_start_32 if number_of_files_64 != number_of_files_32 && number_of_files_32 != u16::MAX as usize {
|| directory_start_32 != u32::MAX as u64
{
return Ok((archive_offset_32, directory_start_32, number_of_files_32));
}
if number_of_files_64 < u32::MAX as usize && number_of_files_64 != number_of_files_32
|| number_of_files_32 != u32::MAX as usize
{
return Ok((archive_offset_32, directory_start_32, number_of_files_32)); return Ok((archive_offset_32, directory_start_32, number_of_files_32));
} }
// It is, so we assume a zip64 // It is, so we assume a zip64