lotuswordpro/source/filter/bencont.cxx | 15 +++++---------- lotuswordpro/source/filter/bento.hxx | 3 ++- lotuswordpro/source/filter/tocread.cxx | 15 +++++++++------ 3 files changed, 16 insertions(+), 17 deletions(-)
New commits: commit 825c8f1b6e2c1e8c686f4656337fa2879ade481d Author: Caolán McNamara <[email protected]> Date: Tue Apr 25 11:55:07 2017 +0100 ofz#1270 avoid oom Change-Id: Iedf0ffdedea1ccda9276763c9d39924c3ff8943b diff --git a/lotuswordpro/source/filter/bencont.cxx b/lotuswordpro/source/filter/bencont.cxx index 8d67e3905963..ed15dc9858a6 100644 --- a/lotuswordpro/source/filter/bencont.cxx +++ b/lotuswordpro/source/filter/bencont.cxx @@ -332,6 +332,11 @@ void LtcBenContainer::CreateGraphicStream(SvStream * &pStream, const char *pObje pStream = pMemStream; } +sal_uLong LtcBenContainer::remainingSize() const +{ + return m_ulLength - cpStream->Tell(); +} + }// end namespace OpenStormBento /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/lotuswordpro/source/filter/bento.hxx b/lotuswordpro/source/filter/bento.hxx index f5f2408d4036..9471590ed6ef 100644 --- a/lotuswordpro/source/filter/bento.hxx +++ b/lotuswordpro/source/filter/bento.hxx @@ -209,6 +209,7 @@ public: // Internal methods explicit LtcBenContainer(LwpSvStream * pStream); ~LtcBenContainer(); + sal_uLong remainingSize() const; BenError Read(void * pBuffer, unsigned long MaxSize, unsigned long * pAmtRead); BenError ReadKnownSize(void * pBuffer, unsigned long Amt); diff --git a/lotuswordpro/source/filter/tocread.cxx b/lotuswordpro/source/filter/tocread.cxx index b6c32955411b..8e7e79a855e4 100644 --- a/lotuswordpro/source/filter/tocread.cxx +++ b/lotuswordpro/source/filter/tocread.cxx @@ -267,6 +267,13 @@ CBenTOCReader::ReadTOC() if ((Err = cpContainer->SeekToPosition(Pos)) != BenErr_OK) return Err; + const auto nRemainingSize = cpContainer->remainingSize(); + if (Length > nRemainingSize) + { + SAL_WARN("lwp", "stream too short for claimed no of records"); + Length = nRemainingSize; + } + #define STACK_BUFFER_SIZE 256 char sStackBuffer[STACK_BUFFER_SIZE]; char * sAllocBuffer; commit b79f9a9bc818022a59184113cf20dd5ada29deff Author: Caolán McNamara <[email protected]> Date: Tue Apr 25 10:52:21 2017 +0100 LtcBenContainer::GetSize is always BenErr_OK Change-Id: Ic14cbc70358800dab57c1a5ac0a834e257d4951a diff --git a/lotuswordpro/source/filter/bencont.cxx b/lotuswordpro/source/filter/bencont.cxx index c67610943f51..8d67e3905963 100644 --- a/lotuswordpro/source/filter/bencont.cxx +++ b/lotuswordpro/source/filter/bencont.cxx @@ -255,16 +255,6 @@ LtcUtBenValueStream * LtcBenContainer::FindValueStreamWithPropertyName(const cha { return FindNextValueStreamWithPropertyName(sPropertyName); } -/** -* <description> -* @param pointer to length of bento file -* @return BenError -*/ -BenError LtcBenContainer::GetSize(sal_uLong * pLength) -{ - *pLength = m_ulLength; - return BenErr_OK; -} sal_uInt32 GetSvStreamSize(SvStream * pStream) { diff --git a/lotuswordpro/source/filter/bento.hxx b/lotuswordpro/source/filter/bento.hxx index 5919258ed78d..f5f2408d4036 100644 --- a/lotuswordpro/source/filter/bento.hxx +++ b/lotuswordpro/source/filter/bento.hxx @@ -223,7 +223,7 @@ public: // Internal methods LtcUtBenValueStream * FindValueStreamWithPropertyName(const char * sPropertyName); void CreateGraphicStream(SvStream * &pStream, const char *pObjectName); - BenError GetSize(sal_uLong * pLength); + sal_uLong GetSize() const { return m_ulLength; } private: // Data CUtOwningList cObjects; CUtList cNamedObjects; diff --git a/lotuswordpro/source/filter/tocread.cxx b/lotuswordpro/source/filter/tocread.cxx index c050b11a4e06..b6c32955411b 100644 --- a/lotuswordpro/source/filter/tocread.cxx +++ b/lotuswordpro/source/filter/tocread.cxx @@ -72,9 +72,7 @@ CBenTOCReader::ReadLabelAndTOC() if ((Err = ReadLabel(&TOCOffset, &cTOCSize)) != BenErr_OK) return Err; - sal_uLong nLength; - if ((Err = cpContainer->GetSize(&nLength)) != BenErr_OK) - return Err; + sal_uLong nLength = cpContainer->GetSize(); if (TOCOffset > nLength) return BenErr_ReadPastEndOfTOC; @@ -148,9 +146,7 @@ CBenTOCReader::SearchForLabel(BenByte * pLabel) { BenError Err; - sal_uLong Length; - if ((Err = cpContainer->GetSize(&Length)) != BenErr_OK) - return Err; + sal_uLong Length = cpContainer->GetSize(); // Always ready to check for MagicBytes from // CurrOffset - BEN_MAGIC_BYTES_SIZE to CurrOffset - 1
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
