summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-04-07 20:49:52 +0100
committerMichael Stahl <Michael.Stahl@cib.de>2019-08-01 15:32:38 +0200
commit3c885bfc4bbb9b071a8e508190db05c8c708e015 (patch)
treeff467d9e01161d3ad81ced144cdce0d7784f28cb /filter
parentfc64f0ca5c9a1c6b305da0b6bc7678827ec1848b (diff)
check escher seeks
Change-Id: I4cb523e8654defa25e75ebd54f1e125ea02e1cf9 Reviewed-on: https://gerrit.libreoffice.org/36281 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit a1147a34d85742fd5d9410efac6fc59ac2fd1574)
Diffstat (limited to 'filter')
-rw-r--r--filter/source/msfilter/msdffimp.cxx18
1 files changed, 11 insertions, 7 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 8a8ffa3a5608..3dda3decd013 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -223,13 +223,20 @@ DffPropertyReader::DffPropertyReader( const SvxMSDffManager& rMan )
InitializePropSet( DFF_msofbtOPT );
}
+bool checkSeek(SvStream &rSt, sal_uInt32 nOffset)
+{
+ const sal_uInt64 nMaxSeek(rSt.Tell() + rSt.remainingSize());
+ return (nOffset <= nMaxSeek && rSt.Seek(nOffset) == nOffset);
+}
+
void DffPropertyReader::SetDefaultPropSet( SvStream& rStCtrl, sal_uInt32 nOffsDgg ) const
{
delete pDefaultPropSet;
sal_uInt32 nMerk = rStCtrl.Tell();
- rStCtrl.Seek( nOffsDgg );
+ bool bOk = checkSeek(rStCtrl, nOffsDgg);
DffRecordHeader aRecHd;
- bool bOk = ReadDffRecordHeader( rStCtrl, aRecHd );
+ if (bOk)
+ bOk = ReadDffRecordHeader( rStCtrl, aRecHd );
if (bOk && aRecHd.nRecType == DFF_msofbtDggContainer)
{
if ( SvxMSDffManager::SeekToRec( rStCtrl, DFF_msofbtOPT, aRecHd.GetRecEndFilePos() ) )
@@ -5804,13 +5811,10 @@ void SvxMSDffManager::CheckTxBxStoryChain()
and remembering the File-Offsets for each Blip
============
******************************************************************************/
-void SvxMSDffManager::GetCtrlData( sal_uInt32 nOffsDgg_ )
+void SvxMSDffManager::GetCtrlData(sal_uInt32 nOffsDggL)
{
- // absolutely remember Start Offset, in case we have to position again
- sal_uInt32 nOffsDggL = nOffsDgg_;
-
// position control stream
- if (nOffsDggL != rStCtrl.Seek(nOffsDggL))
+ if (!checkSeek(rStCtrl, nOffsDggL))
return;
sal_uInt8 nVer;