summaryrefslogtreecommitdiff
path: root/emfio/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-08-30 15:50:26 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-09-01 09:28:30 +0200
commit0a2ab8e9310e64a2c053a700a2e5574ec11a24fc (patch)
tree1ac62f330fb0ed55b9d80e7f4a49446a949322e1 /emfio/source
parentd66ab0c7e8b0330c5c82e37e256557b1a7a6ae03 (diff)
ofz: MemorySanitizer: use-of-uninitialized-value
Change-Id: I9e7be23fd8a52cfd0976ca358d848cbe11e84c2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121355 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'emfio/source')
-rw-r--r--emfio/source/reader/emfreader.cxx19
1 files changed, 17 insertions, 2 deletions
diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx
index e6330987f1bc..a06e589f213b 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -1676,10 +1676,25 @@ namespace emfio
.WriteUInt16( 0 )
.WriteUInt16( 0 )
.WriteUInt32( cbBmiSrc + 14 );
+
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);
+ }
+
mpInputStream->Seek( nStart + offBitsSrc );
- mpInputStream->ReadBytes(pBuf + 14 + cbBmiSrc, cbBitsSrc);
+ pWritePos = pBuf + 14 + cbBmiSrc;
+ nRead = mpInputStream->ReadBytes(pWritePos, cbBitsSrc);
+ if (nRead != cbBitsSrc)
+ {
+ // zero remainder if short read
+ memset(pWritePos + nRead, 0, cbBitsSrc - nRead);
+ }
+
aTmp.Seek( 0 );
ReadDIB(aBitmap, aTmp, true);