sw/source/filter/ww8/ww8graf2.cxx | 12 ++++++------ sw/source/filter/ww8/ww8par.hxx | 2 +- sw/source/filter/ww8/ww8par3.cxx | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-)
New commits: commit 0c5d9b14a8dd313247e1ed6890bb8b7a3a829b22 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Wed Sep 1 09:11:45 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Thu Sep 2 11:06:57 2021 +0200 ofz: MemorySanitizer: use-of-uninitialized-value Change-Id: Ic592091450d596d505b7e802cb8560be2c01cb0b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121451 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx index 2f40435c285d..de4ec0824686 100644 --- a/sw/source/filter/ww8/ww8graf2.cxx +++ b/sw/source/filter/ww8/ww8graf2.cxx @@ -440,7 +440,7 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf1(WW8_PIC const & rPic, SvStream* pSt, return pRet; } -void SwWW8ImplReader::PicRead(SvStream *pDataStream, WW8_PIC *pPic, +bool SwWW8ImplReader::PicRead(SvStream *pDataStream, WW8_PIC *pPic, bool bVer67) { //Only the first 0x2e bytes are the same between version 6/7 and 8+ @@ -451,8 +451,10 @@ void SwWW8ImplReader::PicRead(SvStream *pDataStream, WW8_PIC *pPic, pDataStream->ReadBytes(&i, bVer67 ? 2 : 4); pDataStream->ReadInt16( pPic->dxaOrigin ); pDataStream->ReadInt16( pPic->dyaOrigin ); + bool bOk = pDataStream->good(); if (!bVer67) pDataStream->SeekRel(2); //cProps + return bOk; } namespace @@ -491,14 +493,12 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf(SdrTextObj const * pTextObj, */ auto nOldPos = m_pDataStream->Tell(); WW8_PIC aPic; - bool bValid = checkSeek(*m_pDataStream, m_nPicLocFc); - - if (bValid) - PicRead( m_pDataStream, &aPic, m_bVer67); + bool bValid = checkSeek(*m_pDataStream, m_nPicLocFc) && + PicRead(m_pDataStream, &aPic, m_bVer67); // Sanity check is needed because for example check boxes in field results // contain a WMF-like struct - if (bValid && m_pDataStream->good() && (aPic.lcb >= 58)) + if (bValid && aPic.lcb >= 58) { if( m_pFlyFormatOfJustInsertedGraphic ) { diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx index 5122e772e3ea..ffab6636f377 100644 --- a/sw/source/filter/ww8/ww8par.hxx +++ b/sw/source/filter/ww8/ww8par.hxx @@ -1897,7 +1897,7 @@ public: // really private, but can only be done public const SwFormat* GetStyleWithOrgWWName( std::u16string_view rName ) const ; static bool GetPictGrafFromStream(Graphic& rGraphic, SvStream& rSrc); - static void PicRead( SvStream *pDataStream, WW8_PIC *pPic, bool bVer67); + SAL_WARN_UNUSED_RESULT static bool PicRead(SvStream *pDataStream, WW8_PIC *pPic, bool bVer67); static bool ImportOleWMF(const tools::SvRef<SotStorage>& xSrc1, GDIMetaFile& rWMF, tools::Long& rX, tools::Long& rY); static Color GetCol(sal_uInt8 nIco); diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index d8d061bd7a1a..64c2a2af20be 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -2102,10 +2102,10 @@ bool SwWW8ImplReader::ImportFormulaControl(WW8FormulaControl &aFormula, sal_uLong nOldPos = m_pDataStream->Tell(); WW8_PIC aPic; - m_pDataStream->Seek( nOffset); - PicRead( m_pDataStream, &aPic, m_bVer67); + bool bValid = checkSeek(*m_pDataStream, nOffset) && + PicRead(m_pDataStream, &aPic, m_bVer67); - if((aPic.lcb > 0x3A) && !m_pDataStream->GetError() ) + if (bValid && aPic.lcb > 0x3A) { aFormula.FormulaRead(nWhich,m_pDataStream); bRet = true;