Kaydet (Commit) 0e49d87d authored tarafından Michael Stahl's avatar Michael Stahl

fdo#60732: check max size in SwTxtNode::ReplaceTextOnly

Change-Id: I1ca2075ab99fe1b09df700f55645b44f38cf5bcc
üst b6d45f26
...@@ -1799,9 +1799,19 @@ void SwTxtNode::TransliterateText( ...@@ -1799,9 +1799,19 @@ void SwTxtNode::TransliterateText(
{ {
// now apply the changes from end to start to leave the offsets of the // now apply the changes from end to start to leave the offsets of the
// yet unchanged text parts remain the same. // yet unchanged text parts remain the same.
size_t nSum(m_Text.Len());
for (size_t i = 0; i < aChanges.size(); ++i) for (size_t i = 0; i < aChanges.size(); ++i)
{ { // check this here since AddChanges cannot be moved below
swTransliterationChgData &rData = aChanges[ aChanges.size() - 1 - i ]; // call to ReplaceTextOnly
swTransliterationChgData & rData =
aChanges[ aChanges.size() - 1 - i ];
nSum = nSum + rData.sChanged.Len() - rData.nLen;
if (nSum > TXTNODE_MAX)
{
SAL_WARN("sw.core", "SwTxtNode::ReplaceTextOnly: "
"node text with insertion > TXTNODE_MAX.");
return;
}
if (pUndo) if (pUndo)
pUndo->AddChanges( *this, rData.nStart, rData.nLen, rData.aOffsets ); pUndo->AddChanges( *this, rData.nStart, rData.nLen, rData.aOffsets );
ReplaceTextOnly( rData.nStart, rData.nLen, rData.sChanged, rData.aOffsets ); ReplaceTextOnly( rData.nStart, rData.nLen, rData.sChanged, rData.aOffsets );
...@@ -1814,6 +1824,9 @@ void SwTxtNode::ReplaceTextOnly( xub_StrLen nPos, xub_StrLen nLen, ...@@ -1814,6 +1824,9 @@ void SwTxtNode::ReplaceTextOnly( xub_StrLen nPos, xub_StrLen nLen,
const XubString& rText, const XubString& rText,
const Sequence<sal_Int32>& rOffsets ) const Sequence<sal_Int32>& rOffsets )
{ {
assert(static_cast<size_t>(m_Text.Len()) +
static_cast<size_t>(rText.Len()) - nLen <= TXTNODE_MAX);
m_Text.Replace( nPos, nLen, rText ); m_Text.Replace( nPos, nLen, rText );
xub_StrLen nTLen = rText.Len(); xub_StrLen nTLen = rText.Len();
......
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