From fb01124256b82553183d529db72c66fd542bcd22 Mon Sep 17 00:00:00 2001 From: Jos van den Oever Date: Sat, 3 Dec 2016 15:56:07 +0100 Subject: Fix panic when the mail body is missing --- src/lib.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 530dba9..dfba9e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -649,7 +649,9 @@ pub fn parse_mail(raw_data: &[u8]) -> Result { body: &raw_data[ix_body..], subparts: Vec::::new(), }; - if result.ctype.mimetype.starts_with("multipart/") && result.ctype.boundary.is_some() { + if result.ctype.mimetype.starts_with("multipart/") + && result.ctype.boundary.is_some() + && raw_data.len() > ix_body { let boundary = String::from("--") + result.ctype.boundary.as_ref().unwrap(); if let Some(ix_body_end) = find_from_u8(raw_data, ix_body, boundary.as_bytes()) { result.body = &raw_data[ix_body..ix_body_end]; @@ -946,4 +948,12 @@ mod tests { assert_eq!(mail.ctype.mimetype, "text/html"); assert_eq!(mail.get_body().unwrap(), "hello world"); } + #[test] + fn test_content_type() { + let parsed = parse_mail( + "Content-Type: multipart/related; boundary=\"----=_\"\n" + .as_bytes()) + .unwrap(); + assert_eq!(parsed.headers[0].get_key().unwrap(), "Content-Type"); + } } -- cgit v1.2.3