summaryrefslogtreecommitdiff
path: root/emfio
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-09-30 09:35:23 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-09-30 14:33:52 +0200
commitf78090e3d5cc21f8b6c110b39d9f2057d2fa24e9 (patch)
treed1542167a62f0262ddab3455d1373a4c223d882f /emfio
parent227734f528979fb12733d1ea6c4a951fbfa17bd8 (diff)
ofz#17817 avoid OOM
Change-Id: I354edf5b169e797c76ec79719cdce01e63329df4 Reviewed-on: https://gerrit.libreoffice.org/79833 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'emfio')
-rw-r--r--emfio/source/reader/wmfreader.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/emfio/source/reader/wmfreader.cxx b/emfio/source/reader/wmfreader.cxx
index d1e7f85b1c67..58c4d971cb49 100644
--- a/emfio/source/reader/wmfreader.cxx
+++ b/emfio/source/reader/wmfreader.cxx
@@ -711,10 +711,16 @@ namespace emfio
bool bOk = nWidth && nHeight && nPlanes == 1 && nBitCount == 1 && nBytesPerScan != 0;
if (bOk)
{
+ // must be enough data to fulfil the request
bOk = nBytesPerScan <= mpInputStream->remainingSize() / nHeight;
}
if (bOk)
{
+ // scanline must be large enough to provide all pixels
+ bOk = nBytesPerScan >= nWidth / 8;
+ }
+ if (bOk)
+ {
vcl::bitmap::RawBitmap aBmp( Size( nWidth, nHeight ), 24 );
for (sal_uInt16 y = 0; y < nHeight && mpInputStream->good(); ++y)
{