lotuswordpro/inc/lwpsvstream.hxx           |    1 +
 lotuswordpro/source/filter/lwpidxmgr.cxx   |   10 ++++++----
 lotuswordpro/source/filter/lwpobjhdr.cxx   |    2 +-
 lotuswordpro/source/filter/lwpsvstream.cxx |    2 ++
 4 files changed, 10 insertions(+), 5 deletions(-)

New commits:
commit 312161673912bc60865493635f9820d11f2c58f3
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Aug 31 09:37:31 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Aug 31 20:35:42 2021 +0200

    ofz: MemorySanitizer: use-of-uninitialized-value
    
    Change-Id: I4298dfeafab0fe296a970fce024cc25572e3a2b4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121388
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/lotuswordpro/inc/lwpsvstream.hxx b/lotuswordpro/inc/lwpsvstream.hxx
index a962f6e599d6..3cca958bb142 100644
--- a/lotuswordpro/inc/lwpsvstream.hxx
+++ b/lotuswordpro/inc/lwpsvstream.hxx
@@ -75,6 +75,7 @@ public:
     sal_uInt64 remainingSize();
     sal_Int64 Seek(sal_Int64 pos);
     bool CheckSeek(sal_Int64 pos);
+    bool good() const;
 
     LwpSvStream& ReadUInt8(sal_uInt8& rUInt8);
     LwpSvStream& ReadUInt16(sal_uInt16& rUInt16);
diff --git a/lotuswordpro/source/filter/lwpidxmgr.cxx 
b/lotuswordpro/source/filter/lwpidxmgr.cxx
index 504533fb27cc..e9f34bf956d1 100644
--- a/lotuswordpro/source/filter/lwpidxmgr.cxx
+++ b/lotuswordpro/source/filter/lwpidxmgr.cxx
@@ -88,7 +88,8 @@ void LwpIndexManager::Read(LwpSvStream* pStrm)
 {
     //Read index obj
     LwpObjectHeader ObjHdr;
-    ObjHdr.Read(*pStrm);
+    if (!ObjHdr.Read(*pStrm))
+        throw BadRead();
     std::unique_ptr<LwpObjectStream> xObjStrm(new LwpObjectStream(pStrm, 
ObjHdr.IsCompressed(),
             static_cast<sal_uInt16>(ObjHdr.GetSize())));
 
@@ -224,9 +225,9 @@ void LwpIndexManager::ReadObjIndexData(LwpObjectStream* 
pObjStrm)
  */
 void LwpIndexManager::ReadObjIndex( LwpSvStream *pStrm )
 {
-
     LwpObjectHeader ObjHdr;
-    ObjHdr.Read(*pStrm);
+    if (!ObjHdr.Read(*pStrm))
+        throw BadRead();
     LwpObjectStream aObjStrm(pStrm, ObjHdr.IsCompressed(),
             static_cast<sal_uInt16>(ObjHdr.GetSize()) );
 
@@ -246,7 +247,8 @@ void LwpIndexManager::ReadObjIndex( LwpSvStream *pStrm )
 void LwpIndexManager::ReadLeafIndex( LwpSvStream *pStrm )
 {
     LwpObjectHeader ObjHdr;
-    ObjHdr.Read(*pStrm);
+    if (!ObjHdr.Read(*pStrm))
+        throw BadRead();
     LwpObjectStream aObjStrm( pStrm, ObjHdr.IsCompressed(),
             static_cast<sal_uInt16>(ObjHdr.GetSize()) );
 
diff --git a/lotuswordpro/source/filter/lwpobjhdr.cxx 
b/lotuswordpro/source/filter/lwpobjhdr.cxx
index aeb5c895fc11..37e3e077eaa3 100644
--- a/lotuswordpro/source/filter/lwpobjhdr.cxx
+++ b/lotuswordpro/source/filter/lwpobjhdr.cxx
@@ -195,7 +195,7 @@ bool LwpObjectHeader::Read(LwpSvStream& rStrm)
         }
     }
     sal_Int64 nEndPos = rStrm.Tell();
-    return (nStartPos + nHeaderSize == nEndPos);
+    return rStrm.good() && (nStartPos + nHeaderSize == nEndPos);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lotuswordpro/source/filter/lwpsvstream.cxx 
b/lotuswordpro/source/filter/lwpsvstream.cxx
index dfd18168a728..7e485014c2de 100644
--- a/lotuswordpro/source/filter/lwpsvstream.cxx
+++ b/lotuswordpro/source/filter/lwpsvstream.cxx
@@ -90,6 +90,8 @@ LwpSvStream& LwpSvStream::ReadUInt32(sal_uInt32& rUInt32)
     return *this;
 }
 
+bool LwpSvStream::good() const { return m_pStream->good(); }
+
 /**
  * @descr       SeekRel in stream
 */

Reply via email to