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

check seeks and offsets

Change-Id: I2b6ded138b9101415fc49e93e1ec3ebcd3a9d2ae
üst 0c713e45
...@@ -6505,10 +6505,12 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport ...@@ -6505,10 +6505,12 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
bStatus = false; bStatus = false;
else else
{ {
rIn.Seek( pE->nSlidePersistStartOffset ); auto nOffset(pE->nSlidePersistStartOffset);
bStatus = (nOffset == rIn.Seek(nOffset));
// now we got the right page and are searching for the right // now we got the right page and are searching for the right
// TextHeaderAtom // TextHeaderAtom
while ( rIn.Tell() < pE->nSlidePersistEndOffset ) auto nEndRecPos = DffPropSet::SanitizeEndPos(rIn, pE->nSlidePersistEndOffset);
while (bStatus && rIn.Tell() < nEndRecPos)
{ {
ReadDffRecordHeader( rIn, aClientTextBoxHd ); ReadDffRecordHeader( rIn, aClientTextBoxHd );
if ( aClientTextBoxHd.nRecType == PPT_PST_TextHeaderAtom ) if ( aClientTextBoxHd.nRecType == PPT_PST_TextHeaderAtom )
...@@ -6519,7 +6521,8 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport ...@@ -6519,7 +6521,8 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
break; break;
} }
} }
aClientTextBoxHd.SeekToEndOfRecord( rIn ); if (!aClientTextBoxHd.SeekToEndOfRecord(rIn))
break;
} }
if ( rIn.Tell() > pE->nSlidePersistEndOffset ) if ( rIn.Tell() > pE->nSlidePersistEndOffset )
bStatus = false; bStatus = false;
...@@ -6532,12 +6535,14 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport ...@@ -6532,12 +6535,14 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
// we have to calculate the correct record len // we have to calculate the correct record len
DffRecordHeader aTmpHd; DffRecordHeader aTmpHd;
while ( rIn.Tell() < pE->nSlidePersistEndOffset ) nEndRecPos = DffPropSet::SanitizeEndPos(rIn, pE->nSlidePersistEndOffset);
while (rIn.Tell() < nEndRecPos)
{ {
ReadDffRecordHeader( rIn, aTmpHd ); ReadDffRecordHeader( rIn, aTmpHd );
if ( ( aTmpHd.nRecType == PPT_PST_SlidePersistAtom ) || ( aTmpHd.nRecType == PPT_PST_TextHeaderAtom ) ) if ( ( aTmpHd.nRecType == PPT_PST_SlidePersistAtom ) || ( aTmpHd.nRecType == PPT_PST_TextHeaderAtom ) )
break; break;
aTmpHd.SeekToEndOfRecord( rIn ); if (!aTmpHd.SeekToEndOfRecord(rIn))
break;
aClientTextBoxHd.nRecLen += aTmpHd.nRecLen + DFF_COMMON_RECORD_HEADER_SIZE; aClientTextBoxHd.nRecLen += aTmpHd.nRecLen + DFF_COMMON_RECORD_HEADER_SIZE;
} }
aClientTextBoxHd.SeekToContent( rIn ); aClientTextBoxHd.SeekToContent( rIn );
......
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