summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-09-26 01:09:11 +0300
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-09-26 13:11:54 +0300
commitc44056a9ff33bec9aa2b74b656c6ebefcd73aaeb (patch)
treefac64699911d052cb492c5423a9269592fade18d
parent6d40a57a2e3d04dcdb20d596869303b6feb464af (diff)
melib: fix bug in parser::parts
At a certain point when expecting a line terminator parts() checks for '\n' but not '\r\n'. This resulted in all multipart attachments coming from b"\r\n" sources like IMAP having only one part when parsed.
-rw-r--r--melib/src/email/parser.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/melib/src/email/parser.rs b/melib/src/email/parser.rs
index 9938b10b..80828530 100644
--- a/melib/src/email/parser.rs
+++ b/melib/src/email/parser.rs
@@ -761,7 +761,10 @@ fn parts_f<'a>(input: &'a [u8], boundary: &[u8]) -> IResult<&'a [u8], Vec<&'a [u
}
ret.push(&input[0..end - 2]);
input = &input[end + boundary.len()..];
- if input.len() < 2 || input[0] != b'\n' || &input[0..2] == b"--" {
+ if input.len() < 2
+ || (input[0] != b'\n' && &input[0..2] != b"\r\n")
+ || &input[0..2] == b"--"
+ {
break;
}
if input[0] == b'\n' {