diff --git a/src/bbox.rs b/src/bbox.rs index bb0aa9d..ba95113 100644 --- a/src/bbox.rs +++ b/src/bbox.rs @@ -155,7 +155,11 @@ impl<'a> BoxHolder<'a> { pub fn parse(input: &'a [u8]) -> IResult<&'a [u8], BoxHolder<'a>> { let (_, header) = BoxHeader::parse(input)?; tracing::debug!(box_type = header.box_type, ?header, "Got"); - let (remain, data) = streaming::take(header.box_size)(input)?; + + let box_size = usize::try_from(header.box_size) + .expect("header box size should always fit into a `usize`."); + + let (remain, data) = streaming::take(box_size)(input)?; Ok((remain, BoxHolder { header, data })) } diff --git a/src/bbox/idat.rs b/src/bbox/idat.rs index 88bf6e6..1534ba7 100644 --- a/src/bbox/idat.rs +++ b/src/bbox/idat.rs @@ -14,7 +14,10 @@ pub struct IdatBox<'a> { impl<'a> IdatBox<'a> { pub fn parse(input: &'a [u8]) -> IResult<&'a [u8], IdatBox> { let (remain, header) = BoxHeader::parse(input)?; - let (remain, data) = streaming::take(header.box_size - header.header_size as u64)(remain)?; + + let box_size = usize::try_from(header.box_size).expect("box size must fit into a `usize`."); + + let (remain, data) = streaming::take(box_size - header.header_size)(remain)?; Ok((remain, IdatBox { header, data })) }