From e7a4426872429c2f286819cc0bdbc65fe4bd79cd Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 1 Aug 2018 19:25:27 +0100 Subject: forcepoint#66 make sure we don't get stuck endlessly reparsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie2733e8d7f73e5f6a072604c477e949cd944189a Reviewed-on: https://gerrit.libreoffice.org/58441 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- vcl/source/filter/ipdf/pdfdocument.cxx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vcl/source/filter/ipdf/pdfdocument.cxx b/vcl/source/filter/ipdf/pdfdocument.cxx index 3d9008a22943..c74bcbbade84 100644 --- a/vcl/source/filter/ipdf/pdfdocument.cxx +++ b/vcl/source/filter/ipdf/pdfdocument.cxx @@ -2212,9 +2212,14 @@ size_t PDFDictionaryElement::Parse(const std::vector else if (!pDictionary->alreadyParsing()) { // Nested dictionary. - i = PDFDictionaryElement::Parse(rElements, pDictionary, pDictionary->m_aItems); - rDictionary[aName] = pDictionary; - aName.clear(); + const size_t nexti + = PDFDictionaryElement::Parse(rElements, pDictionary, pDictionary->m_aItems); + if (nexti >= i) // ensure we go forwards and not endlessly loop + { + i = nexti; + rDictionary[aName] = pDictionary; + aName.clear(); + } } } -- cgit