summaryrefslogtreecommitdiff
path: root/filter/source/graphicfilter/ipbm/ipbm.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-03-02 10:56:05 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-03-02 10:56:05 +0000
commit28f820c1a0d8bbe7705d6c43a7c5c4a98bef0cbd (patch)
tree0d343fad96c711c9ca054d629f50c87ee84c4e2a /filter/source/graphicfilter/ipbm/ipbm.cxx
parentc985cda80b54a4c951974bef77398b83eccc7d62 (diff)
ofz: don't alloc for bitmap where there isn't enough data to fill
Change-Id: Ief236828f564ff81bf3a415127413b6cc72fd70d
Diffstat (limited to 'filter/source/graphicfilter/ipbm/ipbm.cxx')
-rw-r--r--filter/source/graphicfilter/ipbm/ipbm.cxx10
1 files changed, 8 insertions, 2 deletions
diff --git a/filter/source/graphicfilter/ipbm/ipbm.cxx b/filter/source/graphicfilter/ipbm/ipbm.cxx
index 13241aa92652..aeb974c5b6b4 100644
--- a/filter/source/graphicfilter/ipbm/ipbm.cxx
+++ b/filter/source/graphicfilter/ipbm/ipbm.cxx
@@ -85,7 +85,13 @@ bool PBMReader::ReadPBM(Graphic & rGraphic )
// 0->PBM, 1->PGM, 2->PPM
switch ( mnMode )
{
- case 0 :
+ case 0:
+ {
+ const size_t nRemainingSize = mrPBM.remainingSize();
+ const size_t nDataRequired = mnWidth * (mnHeight / 8);
+ if (nRemainingSize < nDataRequired)
+ return false;
+
maBmp = Bitmap( Size( mnWidth, mnHeight ), 1 );
mpAcc = maBmp.AcquireWriteAccess();
if (!mpAcc || mpAcc->Width() != mnWidth || mpAcc->Height() != mnHeight)
@@ -94,7 +100,7 @@ bool PBMReader::ReadPBM(Graphic & rGraphic )
mpAcc->SetPaletteColor( 0, BitmapColor( 0xff, 0xff, 0xff ) );
mpAcc->SetPaletteColor( 1, BitmapColor( 0x00, 0x00, 0x00 ) );
break;
-
+ }
case 1 :
if ( mnMaxVal <= 1 )
maBmp = Bitmap( Size( mnWidth, mnHeight ), 1);