include/vcl/BitmapTools.hxx |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit 0a14572868917feafe0c93a37284be352cb4789c
Author:     Caolán McNamara <[email protected]>
AuthorDate: Sun Aug 29 16:58:11 2021 +0100
Commit:     Michael Stahl <[email protected]>
CommitDate: Wed Nov 17 18:58:29 2021 +0100

    ofz#37796 limit to numeric_limits<int>::max
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121230
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>
    (cherry picked from commit 72da4c623baf60eb2b7073697cd36ffb3022847d)
    
    Change-Id: I6e09226fad1e566ba2758d0084042b603b84d221
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125384
    Tested-by: Michael Stahl <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/include/vcl/BitmapTools.hxx b/include/vcl/BitmapTools.hxx
index 2ff0f69eea79..941ef8c9c381 100644
--- a/include/vcl/BitmapTools.hxx
+++ b/include/vcl/BitmapTools.hxx
@@ -24,6 +24,7 @@
 #include <basegfx/matrix/b2dhommatrix.hxx>
 #include <o3tl/safeint.hxx>
 #include <array>
+#include <limits>
 
 namespace vcl {
 namespace bitmap {
@@ -43,6 +44,10 @@ public:
           mnBitCount(nBitCount)
     {
         assert(nBitCount == 24 || nBitCount == 32);
+        if (rSize.getWidth() > std::numeric_limits<sal_Int32>::max() || 
rSize.getWidth() < 0)
+            throw std::bad_alloc();
+        if (rSize.getHeight() > std::numeric_limits<sal_Int32>::max() || 
rSize.getHeight() < 0)
+            throw std::bad_alloc();
         sal_Int32 nRowSize, nDataSize;
         if (o3tl::checked_multiply<sal_Int32>(rSize.getWidth(), nBitCount/8, 
nRowSize) ||
             o3tl::checked_multiply<sal_Int32>(nRowSize, rSize.getHeight(), 
nDataSize) ||

Reply via email to