Skip to content

Commit 3c566c4

Browse files
authored
Fix various issues in gzip header parsing logic
Signed-off-by: Jiahao XU <[email protected]>
1 parent b157fea commit 3c566c4

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

crates/compression-codecs/src/gzip/header.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl Parser {
9191
self.header = Header::parse(data)?;
9292
self.state = State::ExtraLen(<_>::default());
9393
} else {
94-
break Ok(None)
94+
break Ok(None);
9595
}
9696
}
9797

@@ -106,10 +106,10 @@ impl Parser {
106106
if data.unwritten().is_empty() {
107107
let data = data.get_mut();
108108
self.crc.update(data);
109-
let len = u16::from_le_bytes(data);
109+
let len = u16::from_le_bytes(*data);
110110
self.state = State::Extra(len.into());
111111
} else {
112-
break Ok(None)
112+
break Ok(None);
113113
}
114114
}
115115

@@ -121,7 +121,7 @@ impl Parser {
121121
if *bytes_to_consume == 0 {
122122
self.state = State::Filename;
123123
} else {
124-
break Ok(None)
124+
break Ok(None);
125125
}
126126
}
127127

@@ -131,7 +131,10 @@ impl Parser {
131131
continue;
132132
}
133133

134-
consume_cstr()?;
134+
if consume_cstr().is_none() {
135+
break Ok(None);
136+
}
137+
135138
self.state = State::Comment;
136139
}
137140

@@ -141,16 +144,19 @@ impl Parser {
141144
continue;
142145
}
143146

144-
consume_cstr()?;
147+
if consume_cstr().is_none() {
148+
break Ok(None)(
149+
}
150+
145151
self.state = State::Crc(<_>::default());
146152
}
147153

148154
State::Crc(data) => {
149155
let header = std::mem::take(&mut self.header);
150-
156+
151157
if !self.header.flags.crc {
152158
self.state = State::Done;
153-
break Ok(Some(header))
159+
break Ok(Some(header));
154160
}
155161

156162
data.copy_unwritten_from(input);
@@ -160,7 +166,7 @@ impl Parser {
160166
let checksum = self.crc.sum().to_le_bytes();
161167
let data = data.get_mut();
162168

163-
if data == checksum[..2] {
169+
if data == &checksum[..2] {
164170
Ok(Some(header))
165171
} else {
166172
Err(io::Error::new(
@@ -170,12 +176,10 @@ impl Parser {
170176
}
171177
} else {
172178
Ok(None)
173-
}
179+
};
174180
}
175181

176-
State::Done => {
177-
break Err(io::Error::other("parser used after done"))
178-
}
182+
State::Done => break Err(io::Error::other("parser used after done")),
179183
}
180184
}
181185
}

0 commit comments

Comments
 (0)