From 52375437dc3b95c8786d12d5f85b51d0a792ee66 Mon Sep 17 00:00:00 2001 From: Chris Hennick <4961925+Pr0methean@users.noreply.github.com> Date: Sun, 5 May 2024 19:48:32 -0700 Subject: [PATCH] fix: Process ZIP files with up to a 65,978-byte comment (https://github.com/zip-rs/zip-old/issues/183) --- src/spec.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/spec.rs b/src/spec.rs index 7aa9f08e..997ea264 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -53,10 +53,11 @@ impl CentralDirectoryEnd { pub fn find_and_parse(reader: &mut T) -> ZipResult<(CentralDirectoryEnd, u64)> { const HEADER_SIZE: u64 = 22; + const MAX_HEADER_AND_COMMENT_SIZE: u64 = 66000; const BYTES_BETWEEN_MAGIC_AND_COMMENT_SIZE: u64 = HEADER_SIZE - 6; let file_length = reader.seek(io::SeekFrom::End(0))?; - let search_upper_bound = file_length.saturating_sub(HEADER_SIZE + u16::MAX as u64); + let search_upper_bound = file_length.saturating_sub(MAX_HEADER_AND_COMMENT_SIZE); if file_length < HEADER_SIZE { return Err(ZipError::InvalidArchive("Invalid zip header"));