diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-08-27 09:13:42 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2015-08-27 14:23:18 +0000 |
commit | 867bffb0fddbb9311e90f6426b4399f6d2a071d2 (patch) | |
tree | 4d60875ac9c51a98d06c26d358958232eeeec0ec /filter | |
parent | ecb577d0270821cd775656e4aeb5c295a2a6c1d5 (diff) |
extend seek, loop ending tests to ppt specific code
Change-Id: Id4419b6b902b742117e248870b6a663c9c58955f
(cherry picked from commit c249f93d96ec87b0acbd25ffe087543d6fe9fb14)
Reviewed-on: https://gerrit.libreoffice.org/18052
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/msfilter/svdfppt.cxx | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 3f898b675b2e..428708af4878 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -707,19 +707,16 @@ void SdrEscherImport::RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic } } -namespace +sal_uLong DffPropSet::SanitizeEndPos(SvStream &rIn, sal_uLong nEndRecPos) { - sal_uLong SanitizeEndPos(SvStream &rIn, sal_uLong nEndRecPos) + auto nStreamLen = rIn.Tell() + rIn.remainingSize(); + if (nEndRecPos > nStreamLen) { - auto nStreamLen = rIn.Tell() + rIn.remainingSize(); - if (nEndRecPos > nStreamLen) - { - SAL_WARN("filter.ms", "Parsing error: " << nStreamLen << - " max end pos, but " << nEndRecPos << " claimed, truncating"); - nEndRecPos = nStreamLen; - } - return nEndRecPos; + SAL_WARN("filter.ms", "Parsing error: " << nStreamLen << + " max end pos, but " << nEndRecPos << " claimed, truncating"); + nEndRecPos = nStreamLen; } + return nEndRecPos; } /* ProcessObject is called from ImplSdPPTImport::ProcessObj to handle all application specific things, @@ -2661,7 +2658,7 @@ void ImportComment10( SvxMSDffManager& rMan, SvStream& rStCtrl, SdrPage* pPage, sal_Int32 nPosY = 0; - auto nEndRecPos = SanitizeEndPos(rStCtrl, rComment10Hd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rStCtrl, rComment10Hd.GetRecEndFilePos()); while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nEndRecPos ) ) { DffRecordHeader aCommentHd; @@ -3195,7 +3192,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const pListHd->SeekToContent( rSt ); if ( pListHd && SdrPowerPointImport::SeekToContentOfProgTag( 9, rSt, *pListHd, aContentDataHd ) ) { - auto nEndRecPos = SanitizeEndPos(rSt, aContentDataHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rSt, aContentDataHd.GetRecEndFilePos()); while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nEndRecPos ) ) { ReadDffRecordHeader( rSt, aHd ); @@ -3203,7 +3200,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const { case PPT_PST_ExtendedBuGraContainer : { - auto nHdEndRecPos = SanitizeEndPos(rSt, aHd.GetRecEndFilePos()); + auto nHdEndRecPos = DffPropSet::SanitizeEndPos(rSt, aHd.GetRecEndFilePos()); while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nHdEndRecPos ) ) { sal_uInt16 nType; @@ -3275,7 +3272,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const if ( pHd && SdrPowerPointImport::SeekToContentOfProgTag( 9, rSt, *pHd, aContentDataHd ) ) { // get the extended paragraph styles on mainmaster ( graphical bullets, num ruling ... ) - auto nEndRecPos = SanitizeEndPos(rSt, aContentDataHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rSt, aContentDataHd.GetRecEndFilePos()); while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nEndRecPos ) ) { ReadDffRecordHeader( rSt, aHd ); @@ -3289,7 +3286,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const rSt.ReadUInt16( nDepth ); if ( i <= 5 ) { - auto nHdEndRecPos = SanitizeEndPos(rSt, aHd.GetRecEndFilePos()); + auto nHdEndRecPos = DffPropSet::SanitizeEndPos(rSt, aHd.GetRecEndFilePos()); while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nHdEndRecPos ) && ( i < nDepth ) ) { bStyles = true; @@ -4051,7 +4048,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd { pEnvHeader->SeekToContent( rIn ); DffRecordHeader aTxMasterStyleHd; - auto nEndRecPos = SanitizeEndPos(rIn, pEnvHeader->GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, pEnvHeader->GetRecEndFilePos()); while (rIn.Tell() < nEndRecPos) { ReadDffRecordHeader( rIn, aTxMasterStyleHd ); @@ -4063,7 +4060,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd sal_uInt16 nLev = 0; bool bFirst = true; bFoundTxMasterStyleAtom04 = true; - auto nTxEndRecPos = SanitizeEndPos(rIn, aTxMasterStyleHd.GetRecEndFilePos()); + auto nTxEndRecPos = DffPropSet::SanitizeEndPos(rIn, aTxMasterStyleHd.GetRecEndFilePos()); while (rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz && nLev < nMaxPPTLevels) { if ( nLev ) @@ -4102,7 +4099,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd rSlideHd.SeekToContent( rIn ); DffRecordHeader aTxMasterStyleHd; - auto nEndRecPos = SanitizeEndPos(rIn, rSlideHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, rSlideHd.GetRecEndFilePos()); while (rIn.Tell() < nEndRecPos) { ReadDffRecordHeader( rIn, aTxMasterStyleHd ); @@ -4161,7 +4158,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd sal_uInt16 nLev = 0; bool bFirst = true; - auto nTxEndRecPos = SanitizeEndPos(rIn, aTxMasterStyleHd.GetRecEndFilePos()); + auto nTxEndRecPos = DffPropSet::SanitizeEndPos(rIn, aTxMasterStyleHd.GetRecEndFilePos()); while ( rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz ) { if ( nLev && ( nInstance < 5 ) ) @@ -4241,7 +4238,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd { pEnvHeader2->SeekToContent( rIn ); DffRecordHeader aTxMasterStyleHd2; - auto nEnvEndRecPos = SanitizeEndPos(rIn, pEnvHeader2->GetRecEndFilePos()); + auto nEnvEndRecPos = DffPropSet::SanitizeEndPos(rIn, pEnvHeader2->GetRecEndFilePos()); while (rIn.Tell() < nEnvEndRecPos) { ReadDffRecordHeader( rIn, aTxMasterStyleHd2 ); @@ -4252,7 +4249,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd sal_uInt16 nLev = 0; bool bFirst = true; - auto nTxEndRecPos = SanitizeEndPos(rIn, aTxMasterStyleHd2.GetRecEndFilePos()); + auto nTxEndRecPos = DffPropSet::SanitizeEndPos(rIn, aTxMasterStyleHd2.GetRecEndFilePos()); while ( rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz ) { if ( nLev ) @@ -4770,7 +4767,7 @@ bool PPTTextSpecInfoAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& sal_uInt32 nCharIdx = 0; rRecHd.SeekToContent( rIn ); - auto nEndRecPos = SanitizeEndPos(rIn, rRecHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, rRecHd.GetRecEndFilePos()); while (rIn.Tell() < nEndRecPos && rIn.good()) { if ( nRecordType == PPT_PST_TextSpecInfoAtom ) @@ -5118,7 +5115,7 @@ void PPTStyleTextPropReader::Init( SvStream& rIn, const DffRecordHeader& rTextHe { rIn.Seek( rExtParaHd.nFilePos + 8 ); - auto nEndRecPos = SanitizeEndPos(rIn, rExtParaHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, rExtParaHd.GetRecEndFilePos()); while( ( rIn.GetError() == 0 ) && ( rIn.Tell() < nEndRecPos ) ) { aStyleTextProp9.resize( aStyleTextProp9.size() + 1 ); @@ -6643,7 +6640,7 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport // or ParaTabStops and append them on this textobj rIn.Seek( nFilePos ); ::std::vector< PPTFieldEntry* > FieldList; - auto nEndRecPos = SanitizeEndPos(rIn, aClientTextBoxHd.GetRecEndFilePos()); + auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, aClientTextBoxHd.GetRecEndFilePos()); while (rIn.Tell() < nEndRecPos) { ReadDffRecordHeader( rIn, aTextHd ); |