diff options
author | Caolán McNamara <caolanm@redhat.com> | 2022-06-23 14:35:35 +0100 |
---|---|---|
committer | Gabor Kelemen <gabor.kelemen.extern@allotropia.de> | 2023-03-03 12:07:57 +0100 |
commit | d3c893f7446b5e3ca7fb0f811854c8394735c060 (patch) | |
tree | 3c35b07750e1b7d0ae0d70d5e01d2bf043129cf3 | |
parent | ee1c77a325e8d18725592372bd402c5f79842012 (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.cxx | 29 |
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; |