ofz#3811 Integer-overflow
Change-Id: Ia08ac1ae46d4af6df7b0a590752e17a6d9a6836e Reviewed-on: https://gerrit.libreoffice.org/43869 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
@@ -6703,23 +6703,24 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
|
||||
sal_uInt32 nCharIdx = pSpecInfo->nCharIdx;
|
||||
|
||||
// portions and text have to been splitted in some cases
|
||||
for ( ; nI < aStyleTextPropReader.aCharPropList.size(); )
|
||||
for ( ; nI < aStyleTextPropReader.aCharPropList.size(); ++nI)
|
||||
{
|
||||
PPTCharPropSet* pSet = aStyleTextPropReader.aCharPropList[nI];
|
||||
if ( pSet->mnOriginalTextPos < nCharIdx )
|
||||
{
|
||||
if (pSet->mnOriginalTextPos >= nCharIdx)
|
||||
break;
|
||||
pSet->mnLanguage[0] = pSpecInfo->nLanguage[0];
|
||||
pSet->mnLanguage[1] = pSpecInfo->nLanguage[1];
|
||||
pSet->mnLanguage[2] = pSpecInfo->nLanguage[2];
|
||||
// test if the current portion needs to be splitted
|
||||
if ( pSet->maString.getLength() > 1 )
|
||||
{
|
||||
if (pSet->maString.getLength() <= 1)
|
||||
continue;
|
||||
sal_Int32 nIndexOfNextPortion = pSet->maString.getLength() + pSet->mnOriginalTextPos;
|
||||
sal_Int32 nNewLen = nIndexOfNextPortion - nCharIdx;
|
||||
if (nNewLen <= 0)
|
||||
continue;
|
||||
sal_Int32 nOldLen = pSet->maString.getLength() - nNewLen;
|
||||
|
||||
if ( ( nNewLen > 0 ) && ( nOldLen > 0 ) )
|
||||
{
|
||||
if (nOldLen <= 0)
|
||||
continue;
|
||||
OUString aString(pSet->maString);
|
||||
PPTCharPropSet* pNew = new PPTCharPropSet(*pSet);
|
||||
pSet->maString = aString.copy(0, nOldLen);
|
||||
@@ -6729,12 +6730,6 @@ PPTTextObj::PPTTextObj( SvStream& rIn, SdrPowerPointImport& rSdrPowerPointImport
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
nI++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef DBG_UTIL
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user