summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-06-23 14:35:35 +0100
committerGabor Kelemen <gabor.kelemen.extern@allotropia.de>2023-03-03 12:07:57 +0100
commitd3c893f7446b5e3ca7fb0f811854c8394735c060 (patch)
tree3c35b07750e1b7d0ae0d70d5e01d2bf043129cf3
parentee1c77a325e8d18725592372bd402c5f79842012 (diff)
crashtesting: assert on loading forum-mso-en-11942.docx
with getToken index past end Change-Id: I9bfeb9cacd8ad89de8008d37c88d15350ef84fb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136340 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx29
1 files changed, 18 insertions, 11 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 666c60d04e5d..049a644cbef8 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -5107,19 +5107,26 @@ void DomainMapper_Impl::CloseFieldCommand()
case FIELD_LASTSAVEDBY : break;
case FIELD_MACROBUTTON:
{
- //extract macro name
- sal_Int32 nIndex = sizeof(" MACROBUTTON ");
- OUString sMacro = pContext->GetCommand().getToken( 0, ' ', nIndex);
if (xFieldProperties.is())
- xFieldProperties->setPropertyValue(
- getPropertyName(PROP_MACRO_NAME), uno::makeAny( sMacro ));
-
- //extract quick help text
- if(xFieldProperties.is() && pContext->GetCommand().getLength() > nIndex + 1)
{
- xFieldProperties->setPropertyValue(
- getPropertyName(PROP_HINT),
- uno::makeAny( pContext->GetCommand().copy( nIndex )));
+ sal_Int32 nIndex = sizeof(" MACROBUTTON ");
+ OUString sCommand = pContext->GetCommand();
+
+ //extract macro name
+ if (sCommand.getLength() >= nIndex)
+ {
+ OUString sMacro = sCommand.getToken(0, ' ', nIndex);
+ xFieldProperties->setPropertyValue(
+ getPropertyName(PROP_MACRO_NAME), uno::Any( sMacro ));
+ }
+
+ //extract quick help text
+ if (sCommand.getLength() > nIndex + 1)
+ {
+ xFieldProperties->setPropertyValue(
+ getPropertyName(PROP_HINT),
+ uno::Any( sCommand.copy( nIndex )));
+ }
}
}
break;