From bd9cf89f6dc13da314d0dd6fc43512a8732ce125 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Mon, 9 Oct 2017 12:49:58 +0100 Subject: ofz#3587 ignore broken cgm images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I649ace9e3e5cc008ba09fcc72f9c9b79322d39ab Reviewed-on: https://gerrit.libreoffice.org/43277 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- filter/source/graphicfilter/icgm/bitmap.cxx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/filter/source/graphicfilter/icgm/bitmap.cxx b/filter/source/graphicfilter/icgm/bitmap.cxx index 86e70007e3ac..7208fda0ae97 100644 --- a/filter/source/graphicfilter/icgm/bitmap.cxx +++ b/filter/source/graphicfilter/icgm/bitmap.cxx @@ -33,12 +33,31 @@ CGMBitmap::~CGMBitmap() { } +namespace +{ + bool isLegalBitsPerPixel(sal_uInt32 nBitsPerPixel) + { + switch (nBitsPerPixel) + { + case 1: + case 2: + case 4: + case 8: + case 24: + return true; + break; + default: + break; + } + return false; + } +} void CGMBitmap::ImplGetBitmap( CGMBitmapDescriptor& rDesc ) { rDesc.mbStatus = true; - if ( ImplGetDimensions( rDesc ) && rDesc.mpBuf ) + if (ImplGetDimensions(rDesc) && rDesc.mpBuf && isLegalBitsPerPixel(rDesc.mnDstBitsPerPixel)) { rDesc.mpBitmap = new Bitmap( Size( rDesc.mnX, rDesc.mnY ), (sal_uInt16)rDesc.mnDstBitsPerPixel ); if ( ( rDesc.mpAcc = rDesc.mpBitmap->AcquireWriteAccess() ) != nullptr ) -- cgit