writerfilter/source/dmapper/DomainMapper_Impl.cxx | 29 +++++++++++++--------- 1 file changed, 18 insertions(+), 11 deletions(-)
New commits: commit 05cd9a73542f0865639711e808771385ca835e66 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Jun 23 14:35:35 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Thu Jun 23 18:16:41 2022 +0200 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 <caol...@redhat.com> diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 30f07b351ca5..9ce28108c9ce 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -6743,19 +6743,26 @@ void DomainMapper_Impl::CloseFieldCommand() 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::Any( sMacro )); - - //extract quick help text - if(xFieldProperties.is() && pContext->GetCommand().getLength() > nIndex + 1) { - xFieldProperties->setPropertyValue( - getPropertyName(PROP_HINT), - uno::Any( 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;