From 20d55432dcd799c323fc3733ba53caeb290dad3c Mon Sep 17 00:00:00 2001 From: Chris Hennick <4961925+Pr0methean@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:39:34 -0700 Subject: [PATCH] perf: Simplify validation of empty extra-data fields --- src/write.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/write.rs b/src/write.rs index 4bf9a04a..dc4fd724 100644 --- a/src/write.rs +++ b/src/write.rs @@ -293,7 +293,8 @@ impl ExtendedFileOptions { )) } else { self.add_extra_data_unchecked(header_id, data, central_only)?; - self.validate_extra_data()?; + Self::validate_extra_data(&self.extra_data)?; + Self::validate_extra_data(&self.central_extra_data)?; Ok(()) } } @@ -324,10 +325,11 @@ impl ExtendedFileOptions { Ok(()) } - fn validate_extra_data(&self) -> ZipResult<()> { - let mut data = self.extra_data.to_vec(); - data.extend(self.central_extra_data.iter()); + fn validate_extra_data(data: &[u8]) -> ZipResult<()> { let len = data.len() as u64; + if len == 0 { + return Ok(()); + } if len > u16::MAX as u64 { return Err(ZipError::Io(io::Error::new( io::ErrorKind::Other,