Kaydet (Commit) 20b8522e authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Mike Kaganski

tdf#121795 bogus checks on depth limit

nDepth is only set in ParagraphObj::ImplGetParagraphValues
where the limit is checked, so the checks elsewhere are
unnecessary, and aren't comprehensive anyway

Change-Id: I566335da6b0cf13a76dcb247ad45c8b551af4456
Reviewed-on: https://gerrit.libreoffice.org/64223
Tested-by: Jenkins
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst cc56ccc8
...@@ -664,7 +664,6 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -664,7 +664,6 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
bool bFirstParagraph = true; bool bFirstParagraph = true;
sal_uInt32 nCharCount; sal_uInt32 nCharCount;
sal_uInt32 nPropertyFlags = 0; sal_uInt32 nPropertyFlags = 0;
sal_uInt16 nDepth = 0;
sal_Int16 nLineSpacing; sal_Int16 nLineSpacing;
int nInstance = rTextObj.GetInstance(); int nInstance = rTextObj.GetInstance();
...@@ -674,10 +673,6 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -674,10 +673,6 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
const PortionObj& rPortion = pPara->front(); const PortionObj& rPortion = pPara->front();
nCharCount = pPara->CharacterCount(); nCharCount = pPara->CharacterCount();
nDepth = pPara->nDepth;
if ( nDepth > 4)
nDepth = 4;
if ( ( pPara->meTextAdjust == css::beans::PropertyState_DIRECT_VALUE ) || if ( ( pPara->meTextAdjust == css::beans::PropertyState_DIRECT_VALUE ) ||
( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_Adjust, pPara->mnTextAdjust ) ) ) ( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_Adjust, pPara->mnTextAdjust ) ) )
nPropertyFlags |= 0x00000800; nPropertyFlags |= 0x00000800;
...@@ -727,7 +722,7 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -727,7 +722,7 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_UpperDist, pPara->mbParagraphPunctation ? 1 : 0 ) ) ) ( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_UpperDist, pPara->mbParagraphPunctation ? 1 : 0 ) ) )
nPropertyFlags |= 0x00080000; nPropertyFlags |= 0x00080000;
if ( ( pPara->meBiDi == css::beans::PropertyState_DIRECT_VALUE ) || if ( ( pPara->meBiDi == css::beans::PropertyState_DIRECT_VALUE ) ||
( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_BiDi, pPara->mnBiDi ) ) ) ( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_BiDi, pPara->mnBiDi ) ) )
nPropertyFlags |= 0x00200000; nPropertyFlags |= 0x00200000;
sal_Int32 nBuRealSize = pPara->nBulletRealSize; sal_Int32 nBuRealSize = pPara->nBulletRealSize;
...@@ -742,16 +737,16 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -742,16 +737,16 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
} }
// Write nTextOfs and nBullets // Write nTextOfs and nBullets
if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_TextOfs, pPara->nTextOfs ) ) if ( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_TextOfs, pPara->nTextOfs ) )
nPropertyFlags |= 0x100; nPropertyFlags |= 0x100;
if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_BulletOfs, pPara->nBulletOfs )) if ( mpStyleSheet->IsHardAttribute( nInstance, pPara->nDepth, ParaAttr_BulletOfs, pPara->nBulletOfs ))
nPropertyFlags |= 0x400; nPropertyFlags |= 0x400;
FontCollectionEntry aFontDescEntry( pPara->aFontDesc.Name, pPara->aFontDesc.Family, pPara->aFontDesc.Pitch, pPara->aFontDesc.CharSet ); FontCollectionEntry aFontDescEntry( pPara->aFontDesc.Name, pPara->aFontDesc.Family, pPara->aFontDesc.Pitch, pPara->aFontDesc.CharSet );
sal_uInt16 nFontId = static_cast<sal_uInt16>(maFontCollection.GetId( aFontDescEntry )); sal_uInt16 nFontId = static_cast<sal_uInt16>(maFontCollection.GetId( aFontDescEntry ));
rOut.WriteUInt32( nCharCount ) rOut.WriteUInt32( nCharCount )
.WriteUInt16( nDepth ) // Level .WriteUInt16( pPara->nDepth ) // Level
.WriteUInt32( nPropertyFlags ); // Paragraph Attribut Set .WriteUInt32( nPropertyFlags ); // Paragraph Attribut Set
if ( nPropertyFlags & 0xf ) if ( nPropertyFlags & 0xf )
...@@ -1213,7 +1208,7 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u ...@@ -1213,7 +1208,7 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u
{ {
pPara = aTextObj.GetParagraph(0); pPara = aTextObj.GetParagraph(0);
sal_uInt32 nParaFlags = 0x1f; sal_uInt32 nParaFlags = 0x1f;
sal_Int16 nDepth, nMask, nNumberingRule[ 10 ]; sal_Int16 nMask, nNumberingRule[ 10 ];
sal_uInt32 nTextOfs = pPara->nTextOfs; sal_uInt32 nTextOfs = pPara->nTextOfs;
sal_uInt32 nTabs = pPara->maTabStop.getLength(); sal_uInt32 nTabs = pPara->maTabStop.getLength();
const css::style::TabStop* pTabStop = pPara->maTabStop.getConstArray(); const css::style::TabStop* pTabStop = pPara->maTabStop.getConstArray();
...@@ -1223,20 +1218,16 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u ...@@ -1223,20 +1218,16 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u
pPara = aTextObj.GetParagraph(i); pPara = aTextObj.GetParagraph(i);
if ( pPara->bExtendedParameters ) if ( pPara->bExtendedParameters )
{ {
nDepth = pPara->nDepth; nMask = 1 << pPara->nDepth;
if ( nDepth < 5 )
{
nMask = 1 << nDepth;
if ( nParaFlags & nMask ) if ( nParaFlags & nMask )
{ {
nParaFlags &=~ nMask; nParaFlags &=~ nMask;
if ( ( rParaSheet.maParaLevel[ nDepth ].mnTextOfs != pPara->nTextOfs ) || if ( ( rParaSheet.maParaLevel[ pPara->nDepth ].mnTextOfs != pPara->nTextOfs ) ||
( rParaSheet.maParaLevel[ nDepth ].mnBulletOfs != pPara->nBulletOfs ) ) ( rParaSheet.maParaLevel[ pPara->nDepth ].mnBulletOfs != pPara->nBulletOfs ) )
{ {
nParaFlags |= nMask << 16; nParaFlags |= nMask << 16;
nNumberingRule[ nDepth << 1 ] = pPara->nTextOfs; nNumberingRule[ pPara->nDepth << 1 ] = pPara->nTextOfs;
nNumberingRule[ ( nDepth << 1 ) + 1 ] = static_cast<sal_Int16>(pPara->nBulletOfs); nNumberingRule[ ( pPara->nDepth << 1 ) + 1 ] = static_cast<sal_Int16>(pPara->nBulletOfs);
}
} }
} }
} }
...@@ -2445,13 +2436,8 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a ...@@ -2445,13 +2436,8 @@ void PPTWriter::ImplWritePage( const PHLayout& rLayout, EscherSolverContainer& a
for ( sal_uInt32 i = 0; i < aTextObj.ParagraphCount() ; ++i ) for ( sal_uInt32 i = 0; i < aTextObj.ParagraphCount() ; ++i )
{ {
ParagraphObj* pPara = aTextObj.GetParagraph(i); ParagraphObj* pPara = aTextObj.GetParagraph(i);
sal_uInt32 nCharCount = pPara->CharacterCount(); mpStrm->WriteUInt32( pPara->CharacterCount() )
sal_uInt16 nDepth = pPara->nDepth; .WriteUInt16( pPara->nDepth );
if ( nDepth > 4)
nDepth = 4;
mpStrm->WriteUInt32( nCharCount )
.WriteUInt16( nDepth );
} }
mpPptEscherEx->EndAtom( EPP_BaseTextPropAtom ); mpPptEscherEx->EndAtom( EPP_BaseTextPropAtom );
mpPptEscherEx->AddAtom( 10, EPP_TextSpecInfoAtom ); mpPptEscherEx->AddAtom( 10, EPP_TextSpecInfoAtom );
......
...@@ -411,6 +411,8 @@ void PPTExStyleSheet::SetStyleSheet( const css::uno::Reference< css::beans::XPro ...@@ -411,6 +411,8 @@ void PPTExStyleSheet::SetStyleSheet( const css::uno::Reference< css::beans::XPro
bool PPTExStyleSheet::IsHardAttribute( sal_uInt32 nInstance, sal_uInt32 nLevel, PPTExTextAttr eAttr, sal_uInt32 nValue ) bool PPTExStyleSheet::IsHardAttribute( sal_uInt32 nInstance, sal_uInt32 nLevel, PPTExTextAttr eAttr, sal_uInt32 nValue )
{ {
assert(nInstance < PPTEX_STYLESHEETENTRYS && nLevel < 5);
const PPTExParaLevel& rPara = mpParaSheet[ nInstance ]->maParaLevel[ nLevel ]; const PPTExParaLevel& rPara = mpParaSheet[ nInstance ]->maParaLevel[ nLevel ];
const PPTExCharLevel& rChar = mpCharSheet[ nInstance ]->maCharLevel[ nLevel ]; const PPTExCharLevel& rChar = mpCharSheet[ nInstance ]->maCharLevel[ nLevel ];
......
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