sc/source/ui/docshell/impex.cxx |   28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

New commits:
commit 39e502a99c5eba6249ffaf0e7376c431d3e24fe3
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Sep 9 10:39:19 2020 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Sep 9 13:24:42 2020 +0200

    ofz#21213 avoid Timeout when fuzzing
    
    Change-Id: I095ac9e2e07d2b5a2dc5da7cff09fdbfcfb08839
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102291
    Tested-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 68cbfedfb4fc..98b65f929346 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -2041,17 +2041,29 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
                 if ( bData && *p == ';' && *(p+1) == 'P' )
                 {
                     OUString aCode( p+2 );
-                    // unescape doubled semicolons
-                    aCode = aCode.replaceAll(";;", ";");
-                    // get rid of Xcl escape characters
-                    aCode = aCode.replaceAll("\x1b", "");
-                    sal_Int32 nCheckPos;
-                    SvNumFormatType nType;
+
                     sal_uInt32 nKey;
-                    pDoc->GetFormatTable()->PutandConvertEntry( aCode, 
nCheckPos, nType, nKey,
-                                                                
LANGUAGE_ENGLISH_US, ScGlobal::eLnge, false);
+                    sal_Int32 nCheckPos;
+
+                    if (aCode.getLength() > 2048 && 
utl::ConfigManager::IsFuzzing())
+                    {
+                        // consider an excessive length as a failure when 
fuzzing
+                        nCheckPos = 1;
+                    }
+                    else
+                    {
+                        // unescape doubled semicolons
+                        aCode = aCode.replaceAll(";;", ";");
+                        // get rid of Xcl escape characters
+                        aCode = aCode.replaceAll("\x1b", "");
+                        SvNumFormatType nType;
+                        pDoc->GetFormatTable()->PutandConvertEntry( aCode, 
nCheckPos, nType, nKey,
+                                                                    
LANGUAGE_ENGLISH_US, ScGlobal::eLnge, false);
+                    }
+
                     if ( nCheckPos )
                         nKey = 0;
+
                     aFormats.push_back( nKey );
                 }
             }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to