Kaydet (Commit) c249f93d authored tarafından Caolán McNamara's avatar Caolán McNamara

extend seek, loop ending tests to ppt specific code

Change-Id: Id4419b6b902b742117e248870b6a663c9c58955f
üst 496ee4fc
...@@ -708,19 +708,16 @@ void SdrEscherImport::RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic ...@@ -708,19 +708,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(); SAL_WARN("filter.ms", "Parsing error: " << nStreamLen <<
if (nEndRecPos > nStreamLen) " max end pos, but " << nEndRecPos << " claimed, truncating");
{ nEndRecPos = nStreamLen;
SAL_WARN("filter.ms", "Parsing error: " << nStreamLen <<
" max end pos, but " << nEndRecPos << " claimed, truncating");
nEndRecPos = nStreamLen;
}
return nEndRecPos;
} }
return nEndRecPos;
} }
/* ProcessObject is called from ImplSdPPTImport::ProcessObj to handle all application specific things, /* ProcessObject is called from ImplSdPPTImport::ProcessObj to handle all application specific things,
...@@ -2662,7 +2659,7 @@ void ImportComment10( SvxMSDffManager& rMan, SvStream& rStCtrl, SdrPage* pPage, ...@@ -2662,7 +2659,7 @@ void ImportComment10( SvxMSDffManager& rMan, SvStream& rStCtrl, SdrPage* pPage,
sal_Int32 nPosY = 0; sal_Int32 nPosY = 0;
auto nEndRecPos = SanitizeEndPos(rStCtrl, rComment10Hd.GetRecEndFilePos()); auto nEndRecPos = DffPropSet::SanitizeEndPos(rStCtrl, rComment10Hd.GetRecEndFilePos());
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nEndRecPos ) ) while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nEndRecPos ) )
{ {
DffRecordHeader aCommentHd; DffRecordHeader aCommentHd;
...@@ -3185,7 +3182,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const ...@@ -3185,7 +3182,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const
pListHd->SeekToContent( rSt ); pListHd->SeekToContent( rSt );
if ( pListHd && SdrPowerPointImport::SeekToContentOfProgTag( 9, rSt, *pListHd, aContentDataHd ) ) 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 ) ) while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nEndRecPos ) )
{ {
ReadDffRecordHeader( rSt, aHd ); ReadDffRecordHeader( rSt, aHd );
...@@ -3193,7 +3190,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const ...@@ -3193,7 +3190,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const
{ {
case PPT_PST_ExtendedBuGraContainer : case PPT_PST_ExtendedBuGraContainer :
{ {
auto nHdEndRecPos = SanitizeEndPos(rSt, aHd.GetRecEndFilePos()); auto nHdEndRecPos = DffPropSet::SanitizeEndPos(rSt, aHd.GetRecEndFilePos());
while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nHdEndRecPos ) ) while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nHdEndRecPos ) )
{ {
sal_uInt16 nType; sal_uInt16 nType;
...@@ -3265,7 +3262,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const ...@@ -3265,7 +3262,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const
if ( pHd && SdrPowerPointImport::SeekToContentOfProgTag( 9, rSt, *pHd, aContentDataHd ) ) if ( pHd && SdrPowerPointImport::SeekToContentOfProgTag( 9, rSt, *pHd, aContentDataHd ) )
{ // get the extended paragraph styles on mainmaster ( graphical bullets, num ruling ... ) { // 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 ) ) while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nEndRecPos ) )
{ {
ReadDffRecordHeader( rSt, aHd ); ReadDffRecordHeader( rSt, aHd );
...@@ -3279,7 +3276,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const ...@@ -3279,7 +3276,7 @@ PPTExtParaProv::PPTExtParaProv( SdrPowerPointImport& rMan, SvStream& rSt, const
rSt.ReadUInt16( nDepth ); rSt.ReadUInt16( nDepth );
if ( i <= 5 ) 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 ) ) while ( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nHdEndRecPos ) && ( i < nDepth ) )
{ {
bStyles = true; bStyles = true;
...@@ -4041,7 +4038,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4041,7 +4038,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
{ {
pEnvHeader->SeekToContent( rIn ); pEnvHeader->SeekToContent( rIn );
DffRecordHeader aTxMasterStyleHd; DffRecordHeader aTxMasterStyleHd;
auto nEndRecPos = SanitizeEndPos(rIn, pEnvHeader->GetRecEndFilePos()); auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, pEnvHeader->GetRecEndFilePos());
while (rIn.Tell() < nEndRecPos) while (rIn.Tell() < nEndRecPos)
{ {
ReadDffRecordHeader( rIn, aTxMasterStyleHd ); ReadDffRecordHeader( rIn, aTxMasterStyleHd );
...@@ -4053,7 +4050,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4053,7 +4050,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
sal_uInt16 nLev = 0; sal_uInt16 nLev = 0;
bool bFirst = true; bool bFirst = true;
bFoundTxMasterStyleAtom04 = 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) while (rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz && nLev < nMaxPPTLevels)
{ {
if ( nLev ) if ( nLev )
...@@ -4092,7 +4089,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4092,7 +4089,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
rSlideHd.SeekToContent( rIn ); rSlideHd.SeekToContent( rIn );
DffRecordHeader aTxMasterStyleHd; DffRecordHeader aTxMasterStyleHd;
auto nEndRecPos = SanitizeEndPos(rIn, rSlideHd.GetRecEndFilePos()); auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, rSlideHd.GetRecEndFilePos());
while (rIn.Tell() < nEndRecPos) while (rIn.Tell() < nEndRecPos)
{ {
ReadDffRecordHeader( rIn, aTxMasterStyleHd ); ReadDffRecordHeader( rIn, aTxMasterStyleHd );
...@@ -4151,7 +4148,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4151,7 +4148,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
sal_uInt16 nLev = 0; sal_uInt16 nLev = 0;
bool bFirst = true; 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 ) while ( rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz )
{ {
if ( nLev && ( nInstance < 5 ) ) if ( nLev && ( nInstance < 5 ) )
...@@ -4231,7 +4228,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4231,7 +4228,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
{ {
pEnvHeader2->SeekToContent( rIn ); pEnvHeader2->SeekToContent( rIn );
DffRecordHeader aTxMasterStyleHd2; DffRecordHeader aTxMasterStyleHd2;
auto nEnvEndRecPos = SanitizeEndPos(rIn, pEnvHeader2->GetRecEndFilePos()); auto nEnvEndRecPos = DffPropSet::SanitizeEndPos(rIn, pEnvHeader2->GetRecEndFilePos());
while (rIn.Tell() < nEnvEndRecPos) while (rIn.Tell() < nEnvEndRecPos)
{ {
ReadDffRecordHeader( rIn, aTxMasterStyleHd2 ); ReadDffRecordHeader( rIn, aTxMasterStyleHd2 );
...@@ -4242,7 +4239,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd ...@@ -4242,7 +4239,7 @@ PPTStyleSheet::PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rIn, Sd
sal_uInt16 nLev = 0; sal_uInt16 nLev = 0;
bool bFirst = true; 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 ) while ( rIn.GetError() == 0 && rIn.Tell() < nTxEndRecPos && nLev < nLevelAnz )
{ {
if ( nLev ) if ( nLev )
...@@ -4748,7 +4745,7 @@ bool PPTTextSpecInfoAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader& ...@@ -4748,7 +4745,7 @@ bool PPTTextSpecInfoAtomInterpreter::Read( SvStream& rIn, const DffRecordHeader&
sal_uInt32 nCharIdx = 0; sal_uInt32 nCharIdx = 0;
rRecHd.SeekToContent( rIn ); rRecHd.SeekToContent( rIn );
auto nEndRecPos = SanitizeEndPos(rIn, rRecHd.GetRecEndFilePos()); auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, rRecHd.GetRecEndFilePos());
while (rIn.Tell() < nEndRecPos && rIn.good()) while (rIn.Tell() < nEndRecPos && rIn.good())
{ {
if ( nRecordType == PPT_PST_TextSpecInfoAtom ) if ( nRecordType == PPT_PST_TextSpecInfoAtom )
...@@ -5096,7 +5093,7 @@ void PPTStyleTextPropReader::Init( SvStream& rIn, const DffRecordHeader& rTextHe ...@@ -5096,7 +5093,7 @@ void PPTStyleTextPropReader::Init( SvStream& rIn, const DffRecordHeader& rTextHe
{ {
rIn.Seek( rExtParaHd.nFilePos + 8 ); 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 ) ) while( ( rIn.GetError() == 0 ) && ( rIn.Tell() < nEndRecPos ) )
{ {
aStyleTextProp9.resize( aStyleTextProp9.size() + 1 ); aStyleTextProp9.resize( aStyleTextProp9.size() + 1 );
...@@ -6622,7 +6619,7 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport ...@@ -6622,7 +6619,7 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
// or ParaTabStops and append them on this textobj // or ParaTabStops and append them on this textobj
rIn.Seek( nFilePos ); rIn.Seek( nFilePos );
::std::vector< PPTFieldEntry* > FieldList; ::std::vector< PPTFieldEntry* > FieldList;
auto nEndRecPos = SanitizeEndPos(rIn, aClientTextBoxHd.GetRecEndFilePos()); auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, aClientTextBoxHd.GetRecEndFilePos());
while (rIn.Tell() < nEndRecPos) while (rIn.Tell() < nEndRecPos)
{ {
ReadDffRecordHeader( rIn, aTextHd ); ReadDffRecordHeader( rIn, aTextHd );
......
...@@ -60,6 +60,7 @@ class MSFILTER_DLLPUBLIC DffPropSet ...@@ -60,6 +60,7 @@ class MSFILTER_DLLPUBLIC DffPropSet
OUString GetPropertyString( sal_uInt32 nId, SvStream& rStrm ) const; OUString GetPropertyString( sal_uInt32 nId, SvStream& rStrm ) const;
bool SeekToContent( sal_uInt32 nRecType, SvStream& rSt ) const; bool SeekToContent( sal_uInt32 nRecType, SvStream& rSt ) const;
void InitializePropSet( sal_uInt16 nPropSetType ) const; void InitializePropSet( sal_uInt16 nPropSetType ) const;
static sal_uLong SanitizeEndPos(SvStream &rIn, sal_uLong nEndRecPos);
friend SvStream& ReadDffPropSet( SvStream& rIn, DffPropSet& rPropSet ); friend SvStream& ReadDffPropSet( SvStream& rIn, DffPropSet& rPropSet );
friend SvStream& operator|=( SvStream& rIn, DffPropSet& rPropSet ); friend SvStream& operator|=( SvStream& rIn, DffPropSet& rPropSet );
......
...@@ -749,7 +749,8 @@ bool ImplSdPPTImport::Import() ...@@ -749,7 +749,8 @@ bool ImplSdPPTImport::Import()
DffRecordHeader aPageHd; DffRecordHeader aPageHd;
if ( SeekToAktPage( &aPageHd ) ) if ( SeekToAktPage( &aPageHd ) )
{ {
while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) ) auto nEndRecPos = SanitizeEndPos(rStCtrl, aPageHd.GetRecEndFilePos());
while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nEndRecPos ) )
{ {
DffRecordHeader aHd; DffRecordHeader aHd;
ReadDffRecordHeader( rStCtrl, aHd ); ReadDffRecordHeader( rStCtrl, aHd );
...@@ -770,7 +771,8 @@ bool ImplSdPPTImport::Import() ...@@ -770,7 +771,8 @@ bool ImplSdPPTImport::Import()
if ( SeekToRec( rStCtrl, DFF_msofbtSpgrContainer, nEscherF002End, &aEscherObjListHd ) ) if ( SeekToRec( rStCtrl, DFF_msofbtSpgrContainer, nEscherF002End, &aEscherObjListHd ) )
{ {
sal_uInt32 nObjCount = 0; sal_uInt32 nObjCount = 0;
while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aEscherObjListHd.GetRecEndFilePos() ) ) auto nListEndRecPos = SanitizeEndPos(rStCtrl, aEscherObjListHd.GetRecEndFilePos());
while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nListEndRecPos ) )
{ {
DffRecordHeader aHd2; DffRecordHeader aHd2;
ReadDffRecordHeader( rStCtrl, aHd2 ); ReadDffRecordHeader( rStCtrl, aHd2 );
...@@ -801,7 +803,8 @@ bool ImplSdPPTImport::Import() ...@@ -801,7 +803,8 @@ bool ImplSdPPTImport::Import()
DffRecordHeader aProgTagHd; DffRecordHeader aProgTagHd;
if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) ) if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) )
{ {
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aProgTagHd.GetRecEndFilePos() ) ) auto nTagEndRecPos = SanitizeEndPos(rStCtrl, aProgTagHd.GetRecEndFilePos());
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nTagEndRecPos ) )
{ {
DffRecordHeader aProgTagContentHd; DffRecordHeader aProgTagContentHd;
ReadDffRecordHeader( rStCtrl, aProgTagContentHd ); ReadDffRecordHeader( rStCtrl, aProgTagContentHd );
...@@ -909,7 +912,8 @@ bool ImplSdPPTImport::Import() ...@@ -909,7 +912,8 @@ bool ImplSdPPTImport::Import()
bool bNewAnimationsUsed = false; bool bNewAnimationsUsed = false;
aPageHd.SeekToContent( rStCtrl ); aPageHd.SeekToContent( rStCtrl );
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) ) auto nEndRecPos = SanitizeEndPos(rStCtrl, aPageHd.GetRecEndFilePos());
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nEndRecPos ) )
{ {
DffRecordHeader aHd; DffRecordHeader aHd;
ReadDffRecordHeader( rStCtrl, aHd ); ReadDffRecordHeader( rStCtrl, aHd );
...@@ -920,7 +924,8 @@ bool ImplSdPPTImport::Import() ...@@ -920,7 +924,8 @@ bool ImplSdPPTImport::Import()
DffRecordHeader aProgTagHd; DffRecordHeader aProgTagHd;
if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) ) if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) )
{ {
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aProgTagHd.GetRecEndFilePos() ) ) auto nHdEndRecPos = SanitizeEndPos(rStCtrl, aProgTagHd.GetRecEndFilePos());
while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nHdEndRecPos ) )
{ {
DffRecordHeader aProgTagContentHd; DffRecordHeader aProgTagContentHd;
ReadDffRecordHeader( rStCtrl, aProgTagContentHd ); ReadDffRecordHeader( rStCtrl, aProgTagContentHd );
...@@ -1494,7 +1499,7 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const bool bNewAnimations ...@@ -1494,7 +1499,7 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const bool bNewAnimations
DffRecordHeader aPageRecHd; DffRecordHeader aPageRecHd;
if ( SeekToAktPage( &aPageRecHd ) ) if ( SeekToAktPage( &aPageRecHd ) )
{ {
sal_uLong nPageRecEnd = aPageRecHd.GetRecEndFilePos(); sal_uLong nPageRecEnd = SanitizeEndPos(rStCtrl, aPageRecHd.GetRecEndFilePos());
bool bTryTwice = ( eAktPageKind == PPT_SLIDEPAGE ); bool bTryTwice = ( eAktPageKind == PPT_SLIDEPAGE );
bool bSSSlideInfoAtom = false; bool bSSSlideInfoAtom = false;
...@@ -1787,12 +1792,12 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const bool bNewAnimations ...@@ -1787,12 +1792,12 @@ void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const bool bNewAnimations
assert( !pPageList->is_null( nMasterNum ) ); assert( !pPageList->is_null( nMasterNum ) );
const PptSlidePersistEntry& rE = (*pPageList)[ nMasterNum ]; const PptSlidePersistEntry& rE = (*pPageList)[ nMasterNum ];
sal_uInt32 nOfs = rE.aPersistAtom.nReserved; sal_uInt32 nOfs = rE.aPersistAtom.nReserved;
if ( nOfs ) if ( nOfs )
{ {
rStCtrl.Seek( nOfs ); rStCtrl.Seek( nOfs );
nPageRecEnd = nOfs + 16; nPageRecEnd = nOfs + 16;
continue; continue;
} }
} }
} }
...@@ -1951,7 +1956,8 @@ OUString ImplSdPPTImport::ReadMedia( sal_uInt32 nMediaRef ) const ...@@ -1951,7 +1956,8 @@ OUString ImplSdPPTImport::ReadMedia( sal_uInt32 nMediaRef ) const
if ( pHd ) if ( pHd )
{ {
pHd->SeekToContent( rStCtrl ); pHd->SeekToContent( rStCtrl );
while ( ( rStCtrl.Tell() < pHd->GetRecEndFilePos() ) && aRetVal.isEmpty() ) auto nEndRecPos = SanitizeEndPos(rStCtrl, pHd->GetRecEndFilePos());
while ( ( rStCtrl.Tell() < nEndRecPos ) && aRetVal.isEmpty() )
{ {
DffRecordHeader aHdMovie; DffRecordHeader aHdMovie;
ReadDffRecordHeader( rStCtrl, aHdMovie ); ReadDffRecordHeader( rStCtrl, aHdMovie );
...@@ -1971,7 +1977,8 @@ OUString ImplSdPPTImport::ReadMedia( sal_uInt32 nMediaRef ) const ...@@ -1971,7 +1977,8 @@ OUString ImplSdPPTImport::ReadMedia( sal_uInt32 nMediaRef ) const
if ( nRef == nMediaRef ) if ( nRef == nMediaRef )
{ {
aExVideoHd.SeekToContent( rStCtrl ); aExVideoHd.SeekToContent( rStCtrl );
while( rStCtrl.Tell() < aExVideoHd.GetRecEndFilePos() ) auto nHdEndRecPos = SanitizeEndPos(rStCtrl, aExVideoHd.GetRecEndFilePos());
while (rStCtrl.Tell() < nHdEndRecPos)
{ {
DffRecordHeader aHd; DffRecordHeader aHd;
ReadDffRecordHeader( rStCtrl, aHd ); ReadDffRecordHeader( rStCtrl, aHd );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment