[Libreoffice-commits] core.git: vcl/headless

Caolán McNamara caolanm at redhat.com
Fri Jan 6 13:53:02 UTC 2017


 vcl/headless/svpbmp.cxx |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

New commits:
commit 600f22fa3e718c36f3d8f47710df1dbbe0d0c4c2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jan 6 13:46:53 2017 +0000

    use same logic in both Creates
    
    Change-Id: I49dab360c5f93e40f5a6e91fbe721935d795472c

diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx
index e7d367a..d11f3b9 100644
--- a/vcl/headless/svpbmp.cxx
+++ b/vcl/headless/svpbmp.cxx
@@ -121,7 +121,7 @@ BitmapBuffer* ImplCreateDIB(
         pDIB->maPalette.SetEntryCount( nColors );
     }
 
-    size_t size = pDIB->mnScanlineSize * pDIB->mnHeight;
+    const size_t size = pDIB->mnScanlineSize * pDIB->mnHeight;
     if (size > SAL_MAX_INT32)
     {
         delete pDIB;
@@ -176,10 +176,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);
         }


More information about the Libreoffice-commits mailing list