Skip to content

Commit 5dcc542

Browse files
committed
fix(codec/delimiter): fix panic in decode if delimiter is longer than payload
1 parent ec53988 commit 5dcc542

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

framez/src/codec/delimiter.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<'buf> Decoder<'buf> for Delimiter<'_> {
5656
}
5757
Some(last_byte) => {
5858
while self.seen < src.len() {
59-
if src[self.seen] == *last_byte {
59+
if src[self.seen] == *last_byte && self.delimiter.len() <= self.seen + 1 {
6060
let src_delimiter =
6161
&src[self.seen + 1 - self.delimiter.len()..self.seen + 1];
6262

@@ -202,8 +202,9 @@ mod test {
202202
b"Hey".to_vec(),
203203
];
204204

205-
let decoder = Delimiter::new(b"###");
206-
let encoder = Delimiter::new(b"###");
205+
// TODO: use delimiters with different lengths in the fuzzer
206+
let decoder = Delimiter::new(b"######");
207+
let encoder = Delimiter::new(b"######");
207208
let map = |item: &[u8]| item.to_vec();
208209

209210
sink_stream!(encoder, decoder, items, map);

0 commit comments

Comments
 (0)