msg_parser 0.3.5

Outlook Email Message (.msg) parser
Documentation
impl<'ole> super::ole::Reader<'ole> {
    pub(crate) fn read_sector(&self, sector_index: usize) -> Result<&[u8], super::error::Error> {
        let sector_size = self.sec_size.unwrap();
        let offset = sector_size
            .checked_mul(sector_index)
            .ok_or(super::error::Error::BadSizeValue("Sector offset overflow"))?;
        let max_size = offset
            .checked_add(sector_size)
            .ok_or(super::error::Error::BadSizeValue("Sector offset overflow"))?;

        let body = self
            .body
            .as_ref()
            .ok_or(super::error::Error::BadSizeValue("File is too short"))?;

        if body.len() >= max_size {
            Ok(&body[offset..offset + sector_size])
        } else {
            Err(super::error::Error::BadSizeValue("File is too short"))
        }
    }
}