From 47dd2ed93e9a56149ace79e0e72e494dc8f76df7 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sun, 19 Aug 2018 12:59:01 +0300 Subject: [PATCH] Fix potential as_ptr() substraction bug --- melib/src/mailbox/email/attachments.rs | 4 ++-- melib/src/mailbox/email/parser.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/melib/src/mailbox/email/attachments.rs b/melib/src/mailbox/email/attachments.rs index 165533bdd..e050c72a4 100644 --- a/melib/src/mailbox/email/attachments.rs +++ b/melib/src/mailbox/email/attachments.rs @@ -81,7 +81,7 @@ impl AttachmentBuilder { } assert!(boundary.is_some()); let _boundary = boundary.unwrap(); - let offset = _boundary.as_ptr() as usize - value.as_ptr() as usize; + let offset = (_boundary.as_ptr() as usize).wrapping_sub(value.as_ptr() as usize); let boundary = SliceBuild::new(offset, _boundary.len()); let subattachments = Self::subattachments(&self.raw, boundary.get(&value)); assert!(subattachments.len() > 0); @@ -215,7 +215,7 @@ impl AttachmentBuilder { } }; let body_slice = { - let offset = body.as_ptr() as usize - a.as_ptr() as usize; + let offset = (body.as_ptr() as usize).wrapping_sub(a.as_ptr() as usize); SliceBuild::new(offset, body.len()) }; builder.raw = body_slice.get(a).ltrim().into(); diff --git a/melib/src/mailbox/email/parser.rs b/melib/src/mailbox/email/parser.rs index 150092fa1..9a2052e68 100644 --- a/melib/src/mailbox/email/parser.rs +++ b/melib/src/mailbox/email/parser.rs @@ -418,7 +418,7 @@ fn group(input: &[u8]) -> IResult<&[u8], Address> { return IResult::Error(e); } IResult::Done(rest, vec) => { - let size: usize = (rest.as_ptr() as usize) - ((&input[0..] as &[u8]).as_ptr() as usize); + let size: usize = (rest.as_ptr() as usize).wrapping_sub((&input[0..] as &[u8]).as_ptr() as usize); return IResult::Done( rest, Address::Group(GroupAddress {