diff options
Diffstat (limited to 'Build/source/libs/poppler/poppler-src')
7 files changed, 93 insertions, 9 deletions
diff --git a/Build/source/libs/poppler/poppler-src/CMakeLists.txt b/Build/source/libs/poppler/poppler-src/CMakeLists.txt index c90d0e89436..d59a6fc9241 100644 --- a/Build/source/libs/poppler/poppler-src/CMakeLists.txt +++ b/Build/source/libs/poppler/poppler-src/CMakeLists.txt @@ -22,7 +22,7 @@ if (ECM_FOUND) endif() set(POPPLER_MAJOR_VERSION "0") -set(POPPLER_MINOR_VERSION "46") +set(POPPLER_MINOR_VERSION "47") set(POPPLER_MICRO_VERSION "0") set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}") diff --git a/Build/source/libs/poppler/poppler-src/ChangeLog b/Build/source/libs/poppler/poppler-src/ChangeLog index ee2a24b652b..56f1982d3de 100644 --- a/Build/source/libs/poppler/poppler-src/ChangeLog +++ b/Build/source/libs/poppler/poppler-src/ChangeLog @@ -1,3 +1,64 @@ +commit 0889366a5872316919dbb640b6cc5cda85295169 +Author: Jakub Kucharski <jakubkucharski97@gmail.com> +Date: Mon Aug 1 01:10:18 2016 +0200 + + XRef::createDocInfoIfNoneExists(): don't presume that DocInfo is + a dictionary + + In case a PDF document doesn't comply with the PDF reference and + its DocInfo + object isn't a dictionary, remove it and create a dictionary in + its place. + + poppler/XRef.cc | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 7ba975630e12a3242d73372a685e016101c5e479 +Author: Jakub Kucharski <jakubkucharski97@gmail.com> +Date: Mon Aug 1 01:17:08 2016 +0200 + + PDFDoc::setDocInfoStringEntry(): free empty value string + + Normally the ownership of value is passed on to the Object class. In + case value + is an empty string, it doesn't happen, so we have to free it in + order to have + a uniform behaviour managing memory and not to introduce memory leaks. + + poppler/PDFDoc.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit f0feeed3513899558c59b65f798f294212309486 +Author: Matthias Kilian <kili@outback.escape.de> +Date: Mon Aug 1 22:50:44 2016 +0200 + + Work with non gnu grep + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3f5c84e17acfa71dfd44514384398f5a4c449630 +Author: Albert Astals Cid <aacid@kde.org> +Date: Sat Jul 30 17:50:42 2016 +0200 + + Check for XRefEntry existing before using it + + Bug #97005 + + poppler/Hints.cc | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 7d3aea760a14a73962e429059f73d97391660367 +Author: Albert Astals Cid <aacid@kde.org> +Date: Sat Jul 30 17:32:59 2016 +0200 + + Fix abort on documents where the docinfo obj is not a dict + + Bug #97134 + + poppler/PDFDoc.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + commit 5641644f485b402cd906d3db73a22a00eb00489b Author: Albert Astals Cid <aacid@kde.org> Date: Mon Jul 25 00:14:30 2016 +0200 diff --git a/Build/source/libs/poppler/poppler-src/NEWS b/Build/source/libs/poppler/poppler-src/NEWS index 0a8ff445234..3ae7b349b84 100644 --- a/Build/source/libs/poppler/poppler-src/NEWS +++ b/Build/source/libs/poppler/poppler-src/NEWS @@ -1,3 +1,13 @@ +Release 0.47.0 + core: + * Fix abort on documents where the docinfo obj is not a dict. Bug #97134 + * Check for XRefEntry existing before using it. Bug #97005 + * Fix memory leak on PDFDoc::setDocInfoStringEntry() with empty string + * Don't presume that DocInfo is a dictionary in XRef::createDocInfoIfNoneExists() + + build system: + * configure: Work with non gnu greps + Release 0.46.0 core: * cairo: fix bug in setAntialias() diff --git a/Build/source/libs/poppler/poppler-src/configure.ac b/Build/source/libs/poppler/poppler-src/configure.ac index f008e25c60c..c4cfc2c6f2e 100644 --- a/Build/source/libs/poppler/poppler-src/configure.ac +++ b/Build/source/libs/poppler/poppler-src/configure.ac @@ -1,5 +1,5 @@ m4_define([poppler_version_major],[0]) -m4_define([poppler_version_minor],[46]) +m4_define([poppler_version_minor],[47]) m4_define([poppler_version_micro],[0]) m4_define([poppler_version],[poppler_version_major.poppler_version_minor.poppler_version_micro]) @@ -779,13 +779,13 @@ if test x$enable_poppler_qt5 = xyes; then AC_CHECK_TOOL(MOCQT52, moc-qt5) AC_MSG_CHECKING([for Qt5 moc-qt5]) mocversion=`$MOCQT52 -v 2>&1` - mocversiongrep=`echo $mocversion | grep "Qt 5\|moc-qt5 5\|moc 5"` + mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"` if test x"$mocversiongrep" != x"$mocversion"; then AC_CHECK_TOOL(QTCHOOSER, qtchooser) AC_MSG_CHECKING([for qtchooser]) qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2` mocversion=`$qt5tooldir/moc -v 2>&1` - mocversiongrep=`echo $mocversion | grep "Qt 5\|moc 5"` + mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"` if test x"$mocversiongrep" != x"$mocversion"; then # no valid moc found enable_poppler_qt5=no; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Hints.cc b/Build/source/libs/poppler/poppler-src/poppler/Hints.cc index bdd0d322612..6c2fc259a61 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Hints.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Hints.cc @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2010, 2012 Hib Eris <hib@hiberis.nl> -// Copyright 2010, 2011, 2013, 2014 Albert Astals Cid <aacid@kde.org> +// Copyright 2010, 2011, 2013, 2014, 2016 Albert Astals Cid <aacid@kde.org> // Copyright 2010, 2013 Pino Toscano <pino@kde.org> // Copyright 2013 Adrian Johnson <ajohnson@redneon.com> // Copyright 2014 Fabio D'Urso <fabiodurso@hotmail.it> @@ -43,7 +43,13 @@ Hints::Hints(BaseStream *str, Linearization *linearization, XRef *xref, Security pageObjectFirst); pageObjectFirst = 0; } - pageOffsetFirst = xref->getEntry(pageObjectFirst)->offset; + XRefEntry *pageObjectFirstXRefEntry = xref->getEntry(pageObjectFirst); + if (!pageObjectFirstXRefEntry) { + error(errSyntaxWarning, -1, "No XRef entry for first page object"); + pageOffsetFirst = 0; + } else { + pageOffsetFirst = pageObjectFirstXRefEntry->offset; + } if (nPages >= INT_MAX / (int)sizeof(Guint)) { error(errSyntaxWarning, -1, "Invalid number of pages ({0:d}) for hints table", nPages); diff --git a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc index c91d6e440e7..f3383fc027d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005, 2006, 2008 Brad Hards <bradh@frogmouth.net> -// Copyright (C) 2005, 2007-2009, 2011-2015 Albert Astals Cid <aacid@kde.org> +// Copyright (C) 2005, 2007-2009, 2011-2016 Albert Astals Cid <aacid@kde.org> // Copyright (C) 2008 Julien Rebetez <julienr@svn.gnome.org> // Copyright (C) 2008, 2010 Pino Toscano <pino@kde.org> // Copyright (C) 2008, 2010, 2011 Carlos Garcia Campos <carlosgc@gnome.org> @@ -612,6 +612,9 @@ void PDFDoc::setDocInfoModified(Object *infoObj) void PDFDoc::setDocInfoStringEntry(const char *key, GooString *value) { GBool removeEntry = !value || value->getLength() == 0; + if (removeEntry) { + delete value; + } Object infoObj; getDocInfo(&infoObj); @@ -646,7 +649,7 @@ void PDFDoc::setDocInfoStringEntry(const char *key, GooString *value) GooString *PDFDoc::getDocInfoStringEntry(const char *key) { Object infoObj; getDocInfo(&infoObj); - if (infoObj.isNull()) { + if (!infoObj.isDict()) { return NULL; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/XRef.cc b/Build/source/libs/poppler/poppler-src/poppler/XRef.cc index f88c632cf03..75fa52d867a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/XRef.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/XRef.cc @@ -1295,8 +1295,12 @@ Object *XRef::getDocInfoNF(Object *obj) { Object *XRef::createDocInfoIfNoneExists(Object *obj) { getDocInfo(obj); - if (!obj->isNull()) { + if (obj->isDict()) { return obj; + } else if (!obj->isNull()) { + // DocInfo exists, but isn't a dictionary (doesn't comply with the PDF reference) + obj->free(); + removeDocInfo(); } obj->initDict(this); |