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;

Reply via email to