diff --git a/maraiah/image/pict/pm/ind.rs b/maraiah/image/pict/pm/ind.rs index d1ca7cf..25cc056 100644 --- a/maraiah/image/pict/pm/ind.rs +++ b/maraiah/image/pict/pm/ind.rs @@ -1,6 +1,6 @@ //! QuickDraw PICT indexed `PixMap`s. -use crate::{err::*, image::{*, pict::{pm, rle}}}; +use crate::{bin::check_data, err::*, image::{*, pict::{pm, rle}}}; /// Reads an indexed `PixMap`. pub fn read(mut im: Image8, @@ -34,6 +34,8 @@ pub fn read(mut im: Image8, d }; + check_data(&d, im.w())?; + p += pp; for &idx in &d { diff --git a/maraiah/image/pict/pm/r5g5b5.rs b/maraiah/image/pict/pm/r5g5b5.rs index 565efd8..429a6ef 100644 --- a/maraiah/image/pict/pm/r5g5b5.rs +++ b/maraiah/image/pict/pm/r5g5b5.rs @@ -1,6 +1,6 @@ //! QuickDraw PICT R5G5B5 `PixMap`s. -use crate::{bin::u16b, err::*, image::{*, pict::{pm, rle}}}; +use crate::{bin::{check_data, u16b}, err::*, image::{*, pict::{pm, rle}}}; /// Reads a R5G5B5 `PixMap`. pub fn read(mut im: Image8, @@ -26,6 +26,8 @@ pub fn read(mut im: Image8, for _ in 0..im.h() { let (d, pp) = rle::read::(&b[p..], hdr.pitch)?; + check_data(&d, im.w())?; + p += pp; for &cr in &d { diff --git a/maraiah/image/pict/pm/rgb8.rs b/maraiah/image/pict/pm/rgb8.rs index 149fe77..8c1912b 100644 --- a/maraiah/image/pict/pm/rgb8.rs +++ b/maraiah/image/pict/pm/rgb8.rs @@ -1,6 +1,6 @@ //! QuickDraw PICT RGB8 `PixMap`s. -use crate::{err::*, image::{*, pict::{pm, rle}}}; +use crate::{bin::check_data, err::*, image::{*, pict::{pm, rle}}}; /// Reads a RGB8 `PixMap`. pub fn read(mut im: Image8, @@ -41,6 +41,8 @@ pub fn read(mut im: Image8, for _ in 0..im.h() { let (d, pp) = rle::read::(&b[p..], pitch)?; + check_data(&d, im.w() * 3)?; + p += pp; for x in 0..im.w() {