diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-09-30 09:35:23 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-09-30 14:33:52 +0200 |
commit | f78090e3d5cc21f8b6c110b39d9f2057d2fa24e9 (patch) | |
tree | d1542167a62f0262ddab3455d1373a4c223d882f /emfio/source | |
parent | 227734f528979fb12733d1ea6c4a951fbfa17bd8 (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/source')
-rw-r--r-- | emfio/source/reader/wmfreader.cxx | 6 |
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) { |