summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-08-01 21:34:20 +0100
committerAndras Timar <andras.timar@collabora.com>2021-10-10 22:25:52 +0200
commit2d199028d39135c3c24ad2071000bc0603127c69 (patch)
tree3bbd477c73e040b103f356400a6297b89c4f5d2e
parent2e0d1d034b568fb83f26b5376d74cb46d2f5e531 (diff)
forcepoint#67 detect cairo surface creation failure
if e.g. too large Reviewed-on: https://gerrit.libreoffice.org/58454 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de> (cherry picked from commit 36bee88834f90818c5475b460c729186ef6c9229) Change-Id: I7de8748a5ed695c1b3ddc8c1358414f3acd68c94
-rw-r--r--vcl/headless/svpgdi.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index b490121750db..90b9c07cd50c 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -1150,6 +1150,11 @@ void SvpSalGraphics::drawMask( const SalTwoRect& rTR,
/** creates an image from the given rectangle, replacing all black pixels
* with nMaskColor and make all other full transparent */
SourceHelper aSurface(rSalBitmap);
+ if (!aSurface.getSurface())
+ {
+ SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawMask case");
+ return;
+ }
sal_Int32 nStride;
unsigned char *mask_data = aSurface.getBits(nStride);
for (sal_Int32 y = rTR.mnSrcY ; y < rTR.mnSrcY + rTR.mnSrcHeight; ++y)
@@ -1399,6 +1404,11 @@ cairo_surface_t* SvpSalGraphics::createCairoSurface(const BitmapBuffer *pBuffer)
nFormat,
pBuffer->mnWidth, pBuffer->mnHeight,
pBuffer->mnScanlineSize);
+ if (cairo_surface_status(target) != CAIRO_STATUS_SUCCESS)
+ {
+ cairo_surface_destroy(target);
+ return nullptr;
+ }
return target;
}