diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-04-07 20:49:52 +0100 |
---|---|---|
committer | Michael Stahl <Michael.Stahl@cib.de> | 2019-08-01 15:32:38 +0200 |
commit | 3c885bfc4bbb9b071a8e508190db05c8c708e015 (patch) | |
tree | ff467d9e01161d3ad81ced144cdce0d7784f28cb /filter | |
parent | fc64f0ca5c9a1c6b305da0b6bc7678827ec1848b (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.cxx | 18 |
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; |