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