aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-06-25 23:24:18 +0900
committerIgor Tolmachev <me@igorek.dev>2024-06-25 23:24:18 +0900
commit18b613fc0b63cb6e5a9b408ef7f47da8f153d6c6 (patch)
treefac4c2ab00ab46fa01040f85999a72eb8e6336d2
parent3c6dffa5ccfc72804a76f2090738721b90b10ce8 (diff)
downloadarchivator-18b613fc0b63cb6e5a9b408ef7f47da8f153d6c6.tar.gz
archivator-18b613fc0b63cb6e5a9b408ef7f47da8f153d6c6.zip
Fix string errors
-rw-r--r--src/zip/driver.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/zip/driver.rs b/src/zip/driver.rs
index c9a5155..8662623 100644
--- a/src/zip/driver.rs
+++ b/src/zip/driver.rs
@@ -97,11 +97,13 @@ impl<IO: Read + Seek> ArchiveRead for Zip<IO> {
97 p += 4; 97 p += 4;
98 let cdr: CDR = deserialize(&buf[p..p + 42]).unwrap(); 98 let cdr: CDR = deserialize(&buf[p..p + 42]).unwrap();
99 p += 42; 99 p += 42;
100 let name = String::from_utf8(buf[p..p + cdr.name_len as usize].into()).unwrap(); 100 let name = String::from_utf8(buf[p..p + cdr.name_len as usize].into())
101 .map_err(|_| ZipError::InvalidFileName)?;
101 p += cdr.name_len as usize; 102 p += cdr.name_len as usize;
102 let extra_fields: Vec<u8> = buf[p..p + cdr.extra_field_len as usize].into(); 103 let extra_fields: Vec<u8> = buf[p..p + cdr.extra_field_len as usize].into();
103 p += cdr.extra_field_len as usize; 104 p += cdr.extra_field_len as usize;
104 let comment = String::from_utf8(buf[p..p + cdr.comment_len as usize].into()).unwrap(); 105 let comment = String::from_utf8(buf[p..p + cdr.comment_len as usize].into())
106 .map_err(|_| ZipError::InvalidFileComment)?;
105 p += cdr.comment_len as usize; 107 p += cdr.comment_len as usize;
106 108
107 let mut compressed_size = cdr.compressed_size as u64; 109 let mut compressed_size = cdr.compressed_size as u64;