sw/source/filter/html/htmlplug.cxx | 2 ++ sw/source/filter/html/swhtml.cxx | 10 ++++++++-- sw/source/filter/html/swhtml.hxx | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-)
New commits: commit b4edda1842c301a06c5528860542153590027b42 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Fri Sep 17 15:31:23 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Fri Sep 17 21:04:26 2021 +0200 ofz#38652 Avoid timeout in html import Change-Id: Ic2c3b71a96749d613a3a3339824b57eaae2b63ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122267 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx index e3cb057759d5..707badeac7ab 100644 --- a/sw/source/filter/html/htmlplug.cxx +++ b/sw/source/filter/html/htmlplug.cxx @@ -1161,6 +1161,8 @@ void SwHTMLParser::InsertFloatingFrame() RegisterFlyFrame( pFlyFormat ); m_bInFloatingFrame = true; + + ++m_nFloatingFrames; } sal_uInt16 SwHTMLWriter::GuessOLENodeFrameType( const SwNode& rNode ) diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index 122a4ea88213..053a3c4177e4 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -314,6 +314,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn, m_bFuzzing(utl::ConfigManager::IsFuzzing()), m_isInTableStructure(false), m_nTableDepth( 0 ), + m_nFloatingFrames( 0 ), m_pTempViewFrame(nullptr) { // If requested explicitly, then force ignoring of comments (don't create postits for them). @@ -1463,8 +1464,13 @@ void SwHTMLParser::NextToken( HtmlTokenId nToken ) break; case HtmlTokenId::IFRAME_ON: - InsertFloatingFrame(); - m_bCallNextToken = m_bInFloatingFrame && m_xTable; + if (m_bFuzzing && m_nFloatingFrames > 64) + SAL_WARN("sw.html", "Not importing any more FloatingFrames for fuzzing performance"); + else + { + InsertFloatingFrame(); + m_bCallNextToken = m_bInFloatingFrame && m_xTable; + } break; case HtmlTokenId::LINEBREAK: diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx index d2b1fad6bca2..d4f65b2616a2 100644 --- a/sw/source/filter/html/swhtml.hxx +++ b/sw/source/filter/html/swhtml.hxx @@ -472,7 +472,8 @@ class SwHTMLParser : public SfxHTMLParser, public SvtListener bool m_bFuzzing; bool m_isInTableStructure; - sal_Int32 m_nTableDepth; + int m_nTableDepth; + int m_nFloatingFrames; /// the names corresponding to the DOCINFO field subtypes INFO[1-4] OUString m_InfoNames[4];