From e6bc793861b91da89d36511b5bceedee7cc25c9b Mon Sep 17 00:00:00 2001 From: Alison Watson Date: Mon, 1 Jul 2019 01:18:50 -0400 Subject: [PATCH] maraiah: add extra integrity checks for pixmap areas --- maraiah/image/pict/pm/ind.rs | 4 +++- maraiah/image/pict/pm/r5g5b5.rs | 4 +++- maraiah/image/pict/pm/rgb8.rs | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) 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() {