diff options
| -rw-r--r-- | src/zip/driver.rs | 6 |
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; |
