summaryrefslogtreecommitdiffstats
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-13 13:38:07 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-02-13 21:42:45 +0100
commitc137652c30667ffe1dde40c22ee9584190f26dc9 (patch)
tree5381291b493ced724aae6b65289d546e072f5552 /filter
parentofz#6287 limit palette index (diff)
downloadcore-c137652c30667ffe1dde40c22ee9584190f26dc9.tar.gz
core-c137652c30667ffe1dde40c22ee9584190f26dc9.zip
ofz#6291 Out-of-memory
Change-Id: Ib68f1a2804a75a482cc72c68b2de4d266c8cbeb4 Reviewed-on: https://gerrit.libreoffice.org/49653 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/ipbm/ipbm.cxx10
1 files changed, 6 insertions, 4 deletions
diff --git a/filter/source/graphicfilter/ipbm/ipbm.cxx b/filter/source/graphicfilter/ipbm/ipbm.cxx
index 1de647434f7e..686f32119a97 100644
--- a/filter/source/graphicfilter/ipbm/ipbm.cxx
+++ b/filter/source/graphicfilter/ipbm/ipbm.cxx
@@ -18,7 +18,7 @@
*/
#include <sal/config.h>
-
+#include <o3tl/safeint.hxx>
#include <vcl/FilterConfigItem.hxx>
#include <vcl/graph.hxx>
#include <vcl/BitmapTools.hxx>
@@ -84,9 +84,11 @@ bool PBMReader::ReadPBM(Graphic & rGraphic )
{
case 0:
{
- const size_t nRemainingSize = mrPBM.remainingSize();
- const size_t nDataRequired = static_cast<size_t>(mnWidth) * (mnHeight / 8);
- if (nRemainingSize < nDataRequired)
+ sal_uInt32 nDataRequired;
+ if (o3tl::checked_multiply<sal_uInt32>(mnWidth, mnHeight, nDataRequired))
+ return false;
+ const auto nRemainingSize = mrPBM.remainingSize();
+ if (nRemainingSize < nDataRequired / 8)
return false;
mpRawBmp.reset( new vcl::bitmap::RawBitmap( Size( mnWidth, mnHeight ) ) );