[Libreoffice-commits] core.git: filter/source include/filter
Caolán McNamara
caolanm at redhat.com
Tue Sep 19 12:50:50 UTC 2017
filter/source/msfilter/msdffimp.cxx | 22 +++++++++++++---------
include/filter/msfilter/dffrecordheader.hxx | 6 +++---
2 files changed, 16 insertions(+), 12 deletions(-)
New commits:
commit 7e8c38b69742ff037a5e239bf0f02665f053ea53
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Sep 19 12:47:31 2017 +0100
ofz#2538 avoid oom
Change-Id: Ief86805a1d8c010826351d7b701678ee2945770d
Reviewed-on: https://gerrit.libreoffice.org/42466
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 62b43b4ea6a6..ac04412ca3f4 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -5874,19 +5874,23 @@ void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, sal_uLong nLe
sal_uLong nLenBStoreCont = 0, nLenFBSE = 0, nRead = 0;
// search for a BStore Container
+ bool bOk = true;
do
{
- if(!ReadCommonRecordHeader( rSt, nVer, nInst, nFbt, nLength)) return;
+ if (!ReadCommonRecordHeader(rSt, nVer, nInst, nFbt, nLength))
+ return;
nRead += DFF_COMMON_RECORD_HEADER_SIZE + nLength;
- if( DFF_msofbtBstoreContainer == nFbt )
+ if (DFF_msofbtBstoreContainer == nFbt)
{
- nLenBStoreCont = nLength; break;
+ nLenBStoreCont = nLength;
+ break;
}
- rSt.SeekRel( nLength );
+ bOk = checkSeek(rSt, rSt.Tell() + nLength);
}
- while( nRead < nLenDgg );
+ while (bOk && nRead < nLenDgg);
- if( !nLenBStoreCont ) return;
+ if (!bOk || !nLenBStoreCont)
+ return;
// Read all atoms of the containers from the BStore container and store all
// relevant data of all contained FBSEs in out pointer array.
@@ -5906,9 +5910,9 @@ void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, sal_uLong nLe
{
nLenFBSE = nLength;
// is FBSE big enough for our data
- bool bOk = ( nSkipBLIPLen + 4 + nSkipBLIPPos + 4 <= nLenFBSE );
+ bOk = ( nSkipBLIPLen + 4 + nSkipBLIPPos + 4 <= nLenFBSE );
- if( bOk )
+ if (bOk)
{
rSt.SeekRel( nSkipBLIPLen );
rSt.ReadUInt32( nBLIPLen );
@@ -5919,7 +5923,7 @@ void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, sal_uLong nLe
nLength -= nSkipBLIPLen+ 4 + nSkipBLIPPos + 4;
}
- if( bOk )
+ if (bOk)
{
// specialty:
// If nBLIPLen is less than nLenFBSE AND nBLIPPos is NULL,
diff --git a/include/filter/msfilter/dffrecordheader.hxx b/include/filter/msfilter/dffrecordheader.hxx
index 3ad5c4837055..acd0d2539889 100644
--- a/include/filter/msfilter/dffrecordheader.hxx
+++ b/include/filter/msfilter/dffrecordheader.hxx
@@ -45,16 +45,16 @@ public:
bool SeekToEndOfRecord(SvStream& rIn) const
{
sal_uInt64 const nPos = nFilePos + DFF_COMMON_RECORD_HEADER_SIZE + nRecLen;
- return nPos == rIn.Seek(nPos);
+ return checkSeek(rIn, nPos);
}
bool SeekToContent(SvStream& rIn) const
{
sal_uInt64 const nPos = nFilePos + DFF_COMMON_RECORD_HEADER_SIZE;
- return nPos == rIn.Seek(nPos);
+ return checkSeek(rIn, nPos);
}
bool SeekToBegOfRecord(SvStream& rIn) const
{
- return nFilePos == rIn.Seek(nFilePos);
+ return checkSeek(rIn, nFilePos);
}
MSFILTER_DLLPUBLIC friend bool ReadDffRecordHeader(SvStream& rIn, DffRecordHeader& rRec);
More information about the Libreoffice-commits
mailing list