diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-10-09 12:49:58 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-10-09 15:52:39 +0200 |
commit | bd9cf89f6dc13da314d0dd6fc43512a8732ce125 (patch) | |
tree | ec43a1b8729fa8ebb00548832a343b82502ac726 | |
parent | ec1a8442b379c73cdbd8b7eb2d1d40edba890cb7 (diff) |
ofz#3587 ignore broken cgm images
Change-Id: I649ace9e3e5cc008ba09fcc72f9c9b79322d39ab
Reviewed-on: https://gerrit.libreoffice.org/43277
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | filter/source/graphicfilter/icgm/bitmap.cxx | 21 |
1 files changed, 20 insertions, 1 deletions
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 ) |