[Libreoffice-commits] core.git: sw/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Thu Jul 1 11:26:44 UTC 2021


 sw/source/filter/ww8/ww8graf.cxx  |   11 ++++++++++-
 sw/source/filter/ww8/ww8graf2.cxx |   12 ++++++------
 2 files changed, 16 insertions(+), 7 deletions(-)

New commits:
commit 813f6e7c9de6898f42ed28ca8bf7a6fb62a4bb2a
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 1 11:01:47 2021 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Jul 1 13:26:11 2021 +0200

    ofz#30657 Timeout, ignore duplicate images when fuzzing
    
    Change-Id: I4471379ad60a96f63ff53a441b801d48197b021c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118216
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index b5835a0da9e5..fe283e7972dd 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -1447,7 +1447,16 @@ void SwWW8ImplReader::ReadGrafLayer1(WW8PLCFspecial& rPF, tools::Long nGrafAncho
         return;
     }
 
-    bool bCouldSeek = checkSeek(*m_pStrm, SVBT32ToUInt32(pF->fc));
+    sal_uInt32 nPosFc = SVBT32ToUInt32(pF->fc);
+
+    //skip duplicate graphics when fuzzing
+    if (m_bFuzzing)
+    {
+        if (!m_aGrafPosSet.insert(nPosFc).second)
+            return;
+    }
+
+    bool bCouldSeek = checkSeek(*m_pStrm, nPosFc);
     OSL_ENSURE(bCouldSeek, "Invalid graphic offset");
     if (!bCouldSeek)
         return;
diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx
index 266feac64975..599abce76fc3 100644
--- a/sw/source/filter/ww8/ww8graf2.cxx
+++ b/sw/source/filter/ww8/ww8graf2.cxx
@@ -258,12 +258,6 @@ bool SwWW8ImplReader::ReadGrafFile(OUString& rFileName, std::unique_ptr<Graphic>
             return !rFileName.isEmpty();        // read was successful
     }
 
-    GDIMetaFile aWMF;
-    bool bOk = checkSeek(*pSt, nPosFc) && ReadWindowMetafile( *pSt, aWMF );
-
-    if (!bOk || pSt->GetError() || !aWMF.GetActionSize())
-        return false;
-
     //skip duplicate graphics when fuzzing
     if (m_bFuzzing)
     {
@@ -271,6 +265,12 @@ bool SwWW8ImplReader::ReadGrafFile(OUString& rFileName, std::unique_ptr<Graphic>
             return false;
     }
 
+    GDIMetaFile aWMF;
+    bool bOk = checkSeek(*pSt, nPosFc) && ReadWindowMetafile( *pSt, aWMF );
+
+    if (!bOk || pSt->GetError() || !aWMF.GetActionSize())
+        return false;
+
     if (m_xWwFib->m_envr != 1) // !MAC as creator
     {
         rpGraphic.reset(new Graphic(aWMF));


More information about the Libreoffice-commits mailing list