summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-01-09 16:27:15 +0000
committerMichael Stahl <mstahl@redhat.com>2018-01-09 20:41:58 +0100
commitea2f3e285f680820e960c1cb1756a93cfe8ff262 (patch)
tree630f06b9feae75c054ad9d68acce41448a6cc3fd /filter
parent449b0fe2ebdc04b3e7be547b151bef97acbb14ea (diff)
ofz#5154 limit depth to max legal depth
i <= 5 was nonsense here Change-Id: Ic1b0daf874b9df13ad012d11efaee1c31a47b1d6 Reviewed-on: https://gerrit.libreoffice.org/47668 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/msfilter/svdfppt.cxx26
1 files changed, 11 insertions, 15 deletions
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index f1b8c65759d6..b0d9107dbf39 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -3328,22 +3328,17 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const
if ( aHd.nRecInstance < PPT_STYLESHEETENTRYS )
{
sal_uInt16 nDepth = 0, i = 0;
- rSt.ReadUInt16( nDepth );
- if ( i <= 5 )
+ rSt.ReadUInt16(nDepth);
+ nDepth = std::min<sal_uInt16>(nDepth, nMaxPPTLevels);
+ auto nHdEndRecPos = DffPropSet::SanitizeEndPos(rSt, aHd.GetRecEndFilePos());
+ while ( ( rSt.GetError() == ERRCODE_NONE ) && ( rSt.Tell() < nHdEndRecPos ) && ( i < nDepth ) )
{
- auto nHdEndRecPos = DffPropSet::SanitizeEndPos(rSt, aHd.GetRecEndFilePos());
- while ( ( rSt.GetError() == ERRCODE_NONE ) && ( rSt.Tell() < nHdEndRecPos ) && ( i < nDepth ) )
- {
- bStyles = true;
- ReadPPTExtParaLevel( rSt, aExtParaSheet[ (TSS_Type)aHd.nRecInstance ].aExtParaLevel[ i++ ] );
- }
-#ifdef DBG_UTIL
- if ( rSt.Tell() != aHd.GetRecEndFilePos() )
- OSL_FAIL( "PPTExParaProv::PPTExParaProv - error reading PPT_PST_ExtendedParagraphMasterAtom (SJ)" );
-#endif
+ bStyles = true;
+ ReadPPTExtParaLevel( rSt, aExtParaSheet[ (TSS_Type)aHd.nRecInstance ].aExtParaLevel[ i++ ] );
}
#ifdef DBG_UTIL
- else OSL_FAIL( "PPTExParaProv::PPTExParaProv - depth is greater than 5 (SJ)" );
+ if ( rSt.Tell() != aHd.GetRecEndFilePos() )
+ OSL_FAIL( "PPTExParaProv::PPTExParaProv - error reading PPT_PST_ExtendedParagraphMasterAtom (SJ)" );
#endif
}
#ifdef DBG_UTIL
@@ -3422,8 +3417,9 @@ bool PPTNumberFormatCreator::ImplGetExtNumberFormat( SdrPowerPointImport const &
}
if ( ( nBuFlags & 0x03800000 ) != 0x03800000 ) // merge style sheet
- { // we have to read the master attributes
- if ( pParaProv && ( nLevel < 5 ) )
+ {
+ // we have to read the master attributes
+ if (pParaProv && nLevel < nMaxPPTLevels)
{
if ( pParaProv->bStyles )
{