From 5d6ed98fe026adb2fea3673918014f2abee0bd5a Mon Sep 17 00:00:00 2001 From: Matthias Kramm Date: Fri, 4 Jun 2010 09:00:04 -0700 Subject: [PATCH] ignore overlarge bitmaps --- lib/pdf/BitmapOutputDev.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/pdf/BitmapOutputDev.cc b/lib/pdf/BitmapOutputDev.cc index 7b7b6a5..d54c8ea 100644 --- a/lib/pdf/BitmapOutputDev.cc +++ b/lib/pdf/BitmapOutputDev.cc @@ -1699,11 +1699,20 @@ gfxbbox_t BitmapOutputDev::getImageBBox(GfxState*state) bbox.ymax=max(bbox.ymax,y); return bbox; } + +GBool invalid_size(int width, int height) +{ + if((U64)width*(U64)height > 0x7fffffffll) + return 1; + return 0; +} + void BitmapOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool inlineImg) { msg(" drawImageMask streamkind=%d", str->getKind()); + if(invalid_size(width,height)) return; CopyStream*cpystr = new CopyStream(str, height * ((width + 7) / 8)); str = cpystr->getStream(); @@ -1720,6 +1729,7 @@ void BitmapOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int *maskColors, GBool inlineImg) { msg(" drawImage streamkind=%d", str->getKind()); + if(invalid_size(width,height)) return; CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8)); str = cpystr->getStream(); @@ -1738,6 +1748,7 @@ void BitmapOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, GBool maskInvert) { msg(" drawMaskedImage streamkind=%d", str->getKind()); + if(invalid_size(width,height)) return; CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8)); str = cpystr->getStream(); @@ -1757,6 +1768,7 @@ void BitmapOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream * GfxImageColorMap *maskColorMap) { msg(" drawSoftMaskedImage %dx%d (%dx%d) streamkind=%d", width, height, maskWidth, maskHeight, str->getKind()); + if(invalid_size(width,height)) return; CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8)); str = cpystr->getStream(); -- 1.7.10.4