From a0b5731dd6e8be9d61c5da2225512970f47a7c72 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Mon, 30 Aug 2021 12:24:16 +0100 Subject: ofz: MemorySanitizer: use-of-uninitialized-value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iccdfb92beae8d79863d1bca3dc44c1a13bf30a67 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121299 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- emfio/source/reader/emfreader.cxx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'emfio/source') diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx index 6e6893c8afb2..dc154228ac21 100644 --- a/emfio/source/reader/emfreader.cxx +++ b/emfio/source/reader/emfreader.cxx @@ -1543,7 +1543,13 @@ namespace emfio // copy DIBInfoHeader from source (cbBmiSrc bytes) mpInputStream->Seek( nStart + offBmiSrc ); - mpInputStream->ReadBytes(pBuf + 14, cbBmiSrc); + char* pWritePos = pBuf + 14; + auto nRead = mpInputStream->ReadBytes(pWritePos, cbBmiSrc); + if (nRead != cbBmiSrc) + { + // zero remainder if short read + memset(pWritePos + nRead, 0, cbBmiSrc - nRead); + } if (bReadAlpha) { @@ -1555,7 +1561,14 @@ namespace emfio // copy bitmap data from source (offBitsSrc bytes) mpInputStream->Seek( nStart + offBitsSrc ); - mpInputStream->ReadBytes(pBuf + 14 + nDeltaToDIB5HeaderSize + cbBmiSrc, cbBitsSrc); + pWritePos = pBuf + 14 + nDeltaToDIB5HeaderSize + cbBmiSrc; + nRead = mpInputStream->ReadBytes(pWritePos, cbBitsSrc); + if (nRead != cbBitsSrc) + { + // zero remainder if short read + memset(pWritePos + nRead, 0, cbBitsSrc - nRead); + } + aTmp.Seek( 0 ); // prepare to read and fill BitmapEx -- cgit