summaryrefslogtreecommitdiff
path: root/filter/source/graphicfilter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-01-11 20:37:17 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-01-12 15:40:17 +0100
commit3cd738d52ec2adf78f97b1e88b47dec4e5e16f74 (patch)
treef624aaaeacca9f265c710899bad807b0d2c16df2 /filter/source/graphicfilter
parent16e7ca76ae873fe953b483f4c34aa9e5610addf8 (diff)
ofz#20031 Abrt
Change-Id: I54451cdda29b9683fc8adf8374cb611bbebf0097 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86627 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter/source/graphicfilter')
-rw-r--r--filter/source/graphicfilter/icgm/bitmap.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/filter/source/graphicfilter/icgm/bitmap.cxx b/filter/source/graphicfilter/icgm/bitmap.cxx
index e6e4d60da426..e99349c1684d 100644
--- a/filter/source/graphicfilter/icgm/bitmap.cxx
+++ b/filter/source/graphicfilter/icgm/bitmap.cxx
@@ -70,9 +70,17 @@ void CGMBitmap::ImplGetBitmap( CGMBitmapDescriptor& rDesc )
{
rDesc.mbStatus = true;
- if (!(ImplGetDimensions(rDesc) && rDesc.mpBuf && isLegalBitsPerPixel(rDesc.mnDstBitsPerPixel)))
+ if (!ImplGetDimensions(rDesc) || !rDesc.mpBuf)
return;
+ if (!isLegalBitsPerPixel(rDesc.mnDstBitsPerPixel))
+ {
+ rDesc.mbStatus = false;
+ return;
+ }
+
+ try {
+
vcl::bitmap::RawBitmap aBitmap( Size( rDesc.mnX, rDesc.mnY ), 24 );
// the picture may either be read from left to right or right to left, from top to bottom ...
@@ -247,6 +255,10 @@ void CGMBitmap::ImplGetBitmap( CGMBitmapDescriptor& rDesc )
if ( rDesc.mbStatus )
rDesc.mxBitmap = vcl::bitmap::CreateFromData(std::move(aBitmap));
+
+ } catch (const std::bad_alloc&) {
+ rDesc.mbStatus = false;
+ }
}
std::vector<Color> CGMBitmap::ImplGeneratePalette( CGMBitmapDescriptor const & rDesc )