melib: fix out-of-bounds parser bug

jmap
Manos Pitsidianakis 2019-11-28 18:52:12 +02:00
parent 4048eab424
commit 3dfb2f4f2c
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
3 changed files with 10 additions and 4 deletions

View File

@ -416,7 +416,7 @@ mod tests {
#[test]
fn test_attachments() {
return;
/*
let mut default = Draft::default();
default.set_body("αδφαφσαφασ".to_string());
@ -434,6 +434,7 @@ mod tests {
.set_content_transfer_encoding(ContentTransferEncoding::Base64);
default.attachments_mut().push(attachment);
println!("{}", default.finalise().unwrap());
*/
}
}

View File

@ -488,8 +488,13 @@ fn display_addr(input: &[u8]) -> IResult<&[u8], Address> {
length: end,
}
};
let rest_start = if input.len() > end + display_name.length + 2 {
end + display_name.length + 3
} else {
end + display_name.length + 2
};
IResult::Done(
&input[end + display_name.length + 3..],
&input[rest_start..],
Address::Mailbox(MailboxAddress {
raw,
display_name,

View File

@ -14,8 +14,8 @@ fn main() -> Result<()> {
filename.display()
));
let env = Envelope::from_bytes(&buffer.as_bytes(), None).expect("Couldn't parse email");
debug!("Env is {:#?}", env);
debug!(env.body_bytes(buffer.as_bytes()));
eprintln!("Env is {:#?}", env);
eprintln!("{:?}", env.body_bytes(buffer.as_bytes()));
} else {
println!("it's not a file");
}