summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-01-06 13:46:53 +0000
committerAshod Nakashian <ashod.nakashian@collabora.co.uk>2017-12-18 01:07:38 -0500
commit6625510ed71bf11fc91eae3642efbb2a6206cbaa (patch)
treeade3bb79a8d13eb49f8244c782180ac1c95f5581
parentffafd1494084626081e37da1d37c1b2f78c752cb (diff)
use same logic in both Creates
(cherry picked from commit 600f22fa3e718c36f3d8f47710df1dbbe0d0c4c2) Change-Id: I49dab360c5f93e40f5a6e91fbe721935d795472c (cherry picked from commit 3baff350e475524585b219c6c79ae72a99f1ac49)
-rw-r--r--vcl/headless/svpbmp.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx
index ef175e8838f3..967fd910bec3 100644
--- a/vcl/headless/svpbmp.cxx
+++ b/vcl/headless/svpbmp.cxx
@@ -192,10 +192,18 @@ bool SvpSalBitmap::Create(const SalBitmap& rBmp)
{
// TODO: reference counting...
mpDIB = new BitmapBuffer( *rSalBmp.mpDIB );
+
+ const size_t size = mpDIB->mnScanlineSize * mpDIB->mnHeight;
+ if (size > SAL_MAX_INT32)
+ {
+ delete mpDIB;
+ mpDIB = nullptr;
+ return false;
+ }
+
// TODO: get rid of this when BitmapBuffer gets copy constructor
try
{
- size_t size = mpDIB->mnScanlineSize * mpDIB->mnHeight;
mpDIB->mpBits = new sal_uInt8[size];
std::memcpy(mpDIB->mpBits, rSalBmp.mpDIB->mpBits, size);
}