RepositoryExternal.mk | 6 configure.ac | 17 download.lst | 8 external/curl/CVE-2017-8816.patch | 67 + external/curl/CVE-2018-1000005.patch | 36 external/curl/CVE-2018-1000007.patch | 110 ++ external/curl/UnpackedTarball_curl.mk | 3 external/liborcus/0001-protect-the-self-closing-xml-element-code-against-se.patch | 30 external/liborcus/UnpackedTarball_liborcus.mk | 1 external/poppler/ExternalProject_poppler.mk | 51 - external/poppler/Module_poppler.mk | 2 external/poppler/StaticLibrary_poppler.mk | 144 ++ external/poppler/UnpackedTarball_poppler.mk | 8 external/poppler/poppler-0.46.0-std-max.patch.1 | 10 external/poppler/poppler-0.46.0-unused-private-field.patch.1 | 11 external/poppler/poppler-config.patch.1 | 484 ++++++++++ external/poppler/poppler-libjpeg.patch.1 | 23 external/poppler/poppler-mac-fake.patch.1 | 13 external/poppler/poppler-notests.patch.1 | 11 external/poppler/poppler-snprintf.patch.1 | 2 external/poppler/poppler-vs2013.patch.1 | 11 external/poppler/ubsan.patch.0 | 58 - 22 files changed, 890 insertions(+), 216 deletions(-)
New commits: commit e0402228e5ea0301140d47aaabd88f0820711e81 Author: Michael Stahl <michael.st...@cib.de> Date: Thu Jun 28 18:30:28 2018 +0200 python3: upgrade to release 3.5.5 Fixes CVE-2017-1000158. Change-Id: I1871f031e3431253a3403f2ea2b586bcc4aa1016 Reviewed-on: https://gerrit.libreoffice.org/56609 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 744feb55a11263ae0947ab59db76b949b5863acf) Reviewed-on: https://gerrit.libreoffice.org/56684 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/configure.ac b/configure.ac index 57fbf74923ab..65767648de35 100644 --- a/configure.ac +++ b/configure.ac @@ -8247,7 +8247,7 @@ internal) PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.5 else PYTHON_VERSION_MINOR=5 - PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4 + PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.5 fi if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst]) diff --git a/download.lst b/download.lst index 6309c54993a5..49ed2b743f72 100644 --- a/download.lst +++ b/download.lst @@ -137,8 +137,8 @@ ifeq ($(PYTHON_VERSION_MINOR),3) export PYTHON_MD5SUM := 803a75927f8f241ca78633890c798021 export PYTHON_TARBALL := Python-3.3.5.tgz else -export PYTHON_MD5SUM := 2ed4802b7a2a7e40d2e797272bf388ec -export PYTHON_TARBALL := Python-3.5.4.tgz +export PYTHON_MD5SUM := f3763edf9824d5d3a15f5f646083b6e0 +export PYTHON_TARBALL := Python-3.5.5.tar.xz endif export RAPTOR_TARBALL := 4ceb9316488b0ea01acf011023cf7fff-raptor2-2.0.9.tar.gz commit ae95578fcd87cb9d12f857bc68c88abd658bf161 Author: Michael Stahl <mst...@redhat.com> Date: Tue Aug 22 22:26:43 2017 +0200 configure: try to keep PYTHON_VERSION from going stale Since it was set to 3.5.0, the bundled python was upgraded twice, but the directory is still named python-core-3.5.0 :( Change-Id: I15eec4148c2436e1f289d9851ce5bd212d4a368a Reviewed-on: https://gerrit.libreoffice.org/41433 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Michael Stahl <mst...@redhat.com> (cherry picked from commit ac3a4fe35e873de17eefb46c3f5e792aded6b0a5) Reviewed-on: https://gerrit.libreoffice.org/56683 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/configure.ac b/configure.ac index 3512693d23d5..57fbf74923ab 100644 --- a/configure.ac +++ b/configure.ac @@ -8244,10 +8244,14 @@ internal) # when MSVC 2013 support was dropped. if test "$COM" = "MSC" -a "$VCVER" = "120"; then PYTHON_VERSION_MINOR=3 + PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.5 else PYTHON_VERSION_MINOR=5 + PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4 + fi + if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then + AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst]) fi - PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.0 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"]) BUILD_TYPE="$BUILD_TYPE PYTHON" # Embedded Python dies without Home set commit 9c3a0c9e5f33d1a53afe76135739896dfa63fc2a Author: Michael Stahl <michael.st...@cib.de> Date: Mon Jun 25 11:30:09 2018 +0200 poppler: fix incorrect GCC_VERSION check The minor version is encoded into the last 2 digits, the micro version is not avialable. Change-Id: I4eee40511d732ec8cfc8d85943b965bb6e06d66e Reviewed-on: https://gerrit.libreoffice.org/56380 Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> Tested-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> Tested-by: Jenkins (cherry picked from commit 16b10d9ac976d40daffee1d15456016f4a89cd2e) Reviewed-on: https://gerrit.libreoffice.org/56388 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index da85aff3f710..fd7f5c467973 100644 --- a/external/poppler/StaticLibrary_poppler.mk +++ b/external/poppler/StaticLibrary_poppler.mk @@ -34,11 +34,12 @@ $(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ endif # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 +# can't easily check for 4.8.2 exactly so just apply to GCC 4.8.x ifeq ($(COM),GCC) ifeq ($(COM_IS_CLANG),) ifeq ($(CPUNAME),INTEL) -ifeq ($(shell expr '$(GCC_VERSION)' '<' 483),1) -ifeq ($(shell expr '$(GCC_VERSION)' '>=' 480),1) +ifeq ($(shell expr '$(GCC_VERSION)' '<' 409),1) +ifeq ($(shell expr '$(GCC_VERSION)' '>=' 408),1) $(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ -march=i586 \ )) commit b3450c197e8c5349cbe452ebb9f79f291e8b8383 Author: Michael Stahl <michael.st...@cib.de> Date: Fri Jun 22 10:44:02 2018 +0200 poppler: try to work around GCC 4.8.2 bug As seen on Linux-rpm_deb-x86@71-TDF: poppler/Annot.cc:2491:1: internal compiler error: in connect_traces, at dwarf2cfi.c:2676 The bug report claims that -march=i586 works around the bug. Change-Id: I1d97d2df9049e058d49987424cc8e4818a9fa9c6 (cherry picked from commit 1c7921c43960a4a6717c816d646cf0f65fbaec12) Reviewed-on: https://gerrit.libreoffice.org/56292 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit dce6401f7e1f466c30996ad606699479713209e5) Reviewed-on: https://gerrit.libreoffice.org/56299 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index bb5f51b571ca..da85aff3f710 100644 --- a/external/poppler/StaticLibrary_poppler.mk +++ b/external/poppler/StaticLibrary_poppler.mk @@ -33,6 +33,21 @@ $(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ )) endif +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 +ifeq ($(COM),GCC) +ifeq ($(COM_IS_CLANG),) +ifeq ($(CPUNAME),INTEL) +ifeq ($(shell expr '$(GCC_VERSION)' '<' 483),1) +ifeq ($(shell expr '$(GCC_VERSION)' '>=' 480),1) +$(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ + -march=i586 \ +)) +endif +endif +endif +endif +endif + $(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,poppler,cc)) $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\ commit 15cbef65b217e3ca09a5624ecd82624e4ed93785 Author: Michael Stahl <michael.st...@cib.de> Date: Fri Jun 22 10:52:37 2018 +0200 poppler: poppler-snprintf.patch.1 needs rebase Presumably it's needed for MSVC 2013. Change-Id: Ibcd3bab373616faa58db4dab0f92f058d1dfafac Reviewed-on: https://gerrit.libreoffice.org/56274 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/poppler/poppler-snprintf.patch.1 b/external/poppler/poppler-snprintf.patch.1 index aaced8e099c2..baf3e6926c36 100644 --- a/external/poppler/poppler-snprintf.patch.1 +++ b/external/poppler/poppler-snprintf.patch.1 @@ -28,8 +28,8 @@ +# include <systools/win32/snprintf.h> +# endif #endif + #include "goo/glibc.h" #include "goo/gmem.h" - #include "goo/GooString.h" --- poppler-0.22.5/poppler/PageLabelInfo.cc 2013-03-25 22:48:34.000000000 +0100 +++ poppler-0.22.5/poppler/PageLabelInfo.cc 2013-07-08 16:56:47.977901129 +0200 @@ -17,6 +17,14 @@ commit df46a8beb12639b0cdf6a23d2c1107ffd7f7c86c Author: Michael Stahl <michael.st...@cib.de> Date: Wed Jun 20 16:10:44 2018 +0200 poppler: upgrade to release 0.66.0 Unfortunately the autotools build system was removed in 0.60.0, and the CMake one is a bit overeager in linking against system libraries that happen to be installed on the build machine, and we currently don't require CMake anyway, so avoid the problems by using a gbuild makefile and a patch to add the generated header files. Remove all current patches: poppler-notests.patch.1: obsolete (autotools build system) poppler-mac-fake.patch.1: presumed obsolete ubsan.patch.0: presumably fixed differently upstream in https://cgit.freedesktop.org/poppler/poppler/commit/?id=f43cb73939f85952d83afc87a6dc638dc1ae311b poppler-libjpeg.patch.1: obsolete (autotools build system; there appears to be no way to do this with CMake?) 0001-Fix-building-with-old-clang.patch.1: merged upstream Change-Id: I271c87ab3ec25cc9d1e8fafb04dae7c004acc350 (cherry picked from commit 5f8426a077ec0986a4b6cf8a58515ad5496f78e0) Reviewed-on: https://gerrit.libreoffice.org/56259 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 24bbab79fc27..22fd07859a54 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -2693,11 +2693,7 @@ $(call gb_LinkTarget_set_include,$(1),\ $$(INCLUDE) \ ) -$(call gb_LinkTarget_add_libs,$(1),\ - $(call gb_UnpackedTarball_get_dir,poppler)/fofi/.libs/libfofi$(gb_StaticLibrary_PLAINEXT) \ - $(call gb_UnpackedTarball_get_dir,poppler)/goo/.libs/libgoo$(gb_StaticLibrary_PLAINEXT) \ - $(call gb_UnpackedTarball_get_dir,poppler)/poppler/.libs/libpoppler$(gb_StaticLibrary_PLAINEXT) \ -) +$(call gb_LinkTarget_use_static_libraries,$(1),poppler) $(call gb_LinkTarget_use_external,$(1),jpeg) diff --git a/download.lst b/download.lst index 5677ab58e433..6309c54993a5 100644 --- a/download.lst +++ b/download.lst @@ -129,8 +129,8 @@ export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748 export PNG_TARBALL := libpng-1.6.28.tar.gz -export POPPLER_MD5SUM := 6e44408a3b4f4a738f8a6770d0aea8a5 -export POPPLER_TARBALL := poppler-0.59.0.tar.xz +export POPPLER_MD5SUM := 6602813e52f02f85f11ba1590e0ef749 +export POPPLER_TARBALL := poppler-0.66.0.tar.xz export POSTGRESQL_TARBALL := c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2 ifeq ($(PYTHON_VERSION_MINOR),3) diff --git a/external/poppler/0001-Fix-building-with-old-clang.patch.1 b/external/poppler/0001-Fix-building-with-old-clang.patch.1 deleted file mode 100644 index dcddd11d2967..000000000000 --- a/external/poppler/0001-Fix-building-with-old-clang.patch.1 +++ /dev/null @@ -1,25 +0,0 @@ -From dd80c182cbcb188af0dd590f222ba9bbb31e3fb7 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <aa...@kde.org> -Date: Mon, 4 Sep 2017 19:36:06 +0200 -Subject: [PATCH] Fix building with old clang - ---- - poppler/StructElement.cc | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/poppler/StructElement.cc b/poppler/StructElement.cc -index 0fbd336a..451213f8 100644 ---- a/poppler/StructElement.cc -+++ b/poppler/StructElement.cc -@@ -248,6 +248,8 @@ struct AttributeMapEntry { - }; - - struct AttributeDefaults { -+ AttributeDefaults() {}; // needed to support old clang -+ - Object Inline = Object(objName, "Inline"); - Object LrTb = Object(objName, "LrTb"); - Object Normal = Object(objName, "Normal"); --- -2.13.5 - diff --git a/external/poppler/ExternalProject_poppler.mk b/external/poppler/ExternalProject_poppler.mk deleted file mode 100644 index 83d51b9ea9e7..000000000000 --- a/external/poppler/ExternalProject_poppler.mk +++ /dev/null @@ -1,51 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_ExternalProject_ExternalProject,poppler)) - -$(eval $(call gb_ExternalProject_use_autoconf,poppler,build)) - -$(eval $(call gb_ExternalProject_use_externals,poppler,\ - jpeg \ -)) - -$(eval $(call gb_ExternalProject_register_targets,poppler,\ - build \ -)) - -$(call gb_ExternalProject_get_state_target,poppler,build) : - $(call gb_ExternalProject_run,build,\ - $(if $(filter TRUE,$(DISABLE_DYNLOADING)),CFLAGS="$(CFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_COMPILEROPTFLAGS)" CXXFLAGS="$(CXXFLAGS) $(gb_VISIBILITY_FLAGS) $(gb_VISIBILITY_FLAGS_CXX) $(gb_COMPILEROPTFLAGS)",$(if $(filter MSC-120,$(COM)-$(VCVER)),CXXFLAGS="$(CXXFLAGS) -I$(SRCDIR)/include")) \ - MAKE=$(MAKE) PKG_CONFIG="" ./configure \ - --with-pic \ - --enable-static \ - --disable-shared \ - --enable-xpdf-headers \ - --disable-poppler-cpp \ - --enable-libopenjpeg=none \ - --disable-libtiff \ - --enable-libjpeg \ - --disable-libpng \ - --disable-zlib \ - --disable-libcurl \ - --disable-splash-output \ - --disable-cairo-output \ - --disable-poppler-glib \ - --disable-poppler-qt4 \ - --disable-poppler-qt5 \ - --disable-gtk-test \ - --disable-utils \ - --disable-cms \ - $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ - $(if $(filter WNT MACOSX,$(OS)),--with-font-configuration=win32,--with-font-configuration=fontconfig) \ - $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ - && $(MAKE) \ - ) - -# vim: set noet sw=4 ts=4: diff --git a/external/poppler/Module_poppler.mk b/external/poppler/Module_poppler.mk index 357bc6dd365e..9ae5ed7c8633 100644 --- a/external/poppler/Module_poppler.mk +++ b/external/poppler/Module_poppler.mk @@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,poppler)) ifeq ($(SYSTEM_POPPLER),) $(eval $(call gb_Module_add_targets,poppler,\ - ExternalProject_poppler \ + StaticLibrary_poppler \ UnpackedTarball_poppler \ )) diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk new file mode 100644 index 000000000000..bb5f51b571ca --- /dev/null +++ b/external/poppler/StaticLibrary_poppler.mk @@ -0,0 +1,128 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_StaticLibrary_StaticLibrary,poppler)) + +$(eval $(call gb_StaticLibrary_use_unpacked,poppler,poppler)) + +$(eval $(call gb_StaticLibrary_use_external,poppler,jpeg)) + +$(eval $(call gb_StaticLibrary_set_warnings_not_errors,poppler)) + +$(eval $(call gb_StaticLibrary_set_include,poppler,\ + -I$(WORKDIR)/UnpackedTarball/poppler \ + -I$(WORKDIR)/UnpackedTarball/poppler/fofi \ + -I$(WORKDIR)/UnpackedTarball/poppler/goo \ + -I$(WORKDIR)/UnpackedTarball/poppler/poppler \ + $$(INCLUDE) \ +)) + +ifeq ($(OS),WNT) +$(eval $(call gb_StaticLibrary_add_defs,poppler,\ + -DWIN32_LEAN_AND_MEAN \ + -D_CRT_SECURE_NO_WARNINGS \ +)) +$(eval $(call gb_StaticLibrary_add_cxxflags,poppler,\ + /Zc:wchar_t- \ +)) +endif + +$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,poppler,cc)) + +$(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\ + UnpackedTarball/poppler/goo/gfile \ + UnpackedTarball/poppler/goo/gmempp \ + UnpackedTarball/poppler/goo/GooList \ + UnpackedTarball/poppler/goo/GooTimer \ + UnpackedTarball/poppler/goo/GooString \ + UnpackedTarball/poppler/goo/gmem \ + UnpackedTarball/poppler/goo/FixedPoint \ + UnpackedTarball/poppler/goo/NetPBMWriter \ + UnpackedTarball/poppler/goo/PNGWriter \ + UnpackedTarball/poppler/goo/TiffWriter \ + UnpackedTarball/poppler/goo/JpegWriter \ + UnpackedTarball/poppler/goo/ImgWriter \ + UnpackedTarball/poppler/goo/gstrtod \ + UnpackedTarball/poppler/goo/grandom \ + UnpackedTarball/poppler/goo/glibc \ + UnpackedTarball/poppler/goo/glibc_strtok_r \ + UnpackedTarball/poppler/fofi/FoFiBase \ + UnpackedTarball/poppler/fofi/FoFiEncodings \ + UnpackedTarball/poppler/fofi/FoFiTrueType \ + UnpackedTarball/poppler/fofi/FoFiType1 \ + UnpackedTarball/poppler/fofi/FoFiType1C \ + UnpackedTarball/poppler/fofi/FoFiIdentifier \ + UnpackedTarball/poppler/poppler/Annot \ + UnpackedTarball/poppler/poppler/Array \ + UnpackedTarball/poppler/poppler/BuiltinFont \ + UnpackedTarball/poppler/poppler/BuiltinFontTables \ + UnpackedTarball/poppler/poppler/CachedFile \ + UnpackedTarball/poppler/poppler/Catalog \ + UnpackedTarball/poppler/poppler/CharCodeToUnicode \ + UnpackedTarball/poppler/poppler/CMap \ + UnpackedTarball/poppler/poppler/DateInfo \ + UnpackedTarball/poppler/poppler/Decrypt \ + UnpackedTarball/poppler/poppler/Dict \ + UnpackedTarball/poppler/poppler/Error \ + UnpackedTarball/poppler/poppler/FileSpec \ + UnpackedTarball/poppler/poppler/FontEncodingTables \ + UnpackedTarball/poppler/poppler/Form \ + UnpackedTarball/poppler/poppler/FontInfo \ + UnpackedTarball/poppler/poppler/Function \ + UnpackedTarball/poppler/poppler/Gfx \ + UnpackedTarball/poppler/poppler/GfxFont \ + UnpackedTarball/poppler/poppler/GfxState \ + UnpackedTarball/poppler/poppler/GlobalParams \ + UnpackedTarball/poppler/poppler/Hints \ + UnpackedTarball/poppler/poppler/JArithmeticDecoder \ + UnpackedTarball/poppler/poppler/JBIG2Stream \ + UnpackedTarball/poppler/poppler/Lexer \ + UnpackedTarball/poppler/poppler/Link \ + UnpackedTarball/poppler/poppler/Linearization \ + UnpackedTarball/poppler/poppler/LocalPDFDocBuilder \ + UnpackedTarball/poppler/poppler/MarkedContentOutputDev \ + UnpackedTarball/poppler/poppler/NameToCharCode \ + UnpackedTarball/poppler/poppler/Object \ + UnpackedTarball/poppler/poppler/OptionalContent \ + UnpackedTarball/poppler/poppler/Outline \ + UnpackedTarball/poppler/poppler/OutputDev \ + UnpackedTarball/poppler/poppler/Page \ + UnpackedTarball/poppler/poppler/PageTransition \ + UnpackedTarball/poppler/poppler/Parser \ + UnpackedTarball/poppler/poppler/PDFDoc \ + UnpackedTarball/poppler/poppler/PDFDocEncoding \ + UnpackedTarball/poppler/poppler/PDFDocFactory \ + UnpackedTarball/poppler/poppler/PopplerCache \ + UnpackedTarball/poppler/poppler/ProfileData \ + UnpackedTarball/poppler/poppler/PreScanOutputDev \ + UnpackedTarball/poppler/poppler/PSTokenizer \ + UnpackedTarball/poppler/poppler/SignatureInfo \ + UnpackedTarball/poppler/poppler/Stream \ + UnpackedTarball/poppler/poppler/StructTreeRoot \ + UnpackedTarball/poppler/poppler/StructElement \ + UnpackedTarball/poppler/poppler/UnicodeMap \ + UnpackedTarball/poppler/poppler/UnicodeMapFuncs \ + UnpackedTarball/poppler/poppler/UnicodeTypeTable \ + UnpackedTarball/poppler/poppler/UTF \ + UnpackedTarball/poppler/poppler/XRef \ + UnpackedTarball/poppler/poppler/PSOutputDev \ + UnpackedTarball/poppler/poppler/TextOutputDev \ + UnpackedTarball/poppler/poppler/PageLabelInfo \ + UnpackedTarball/poppler/poppler/SecurityHandler \ + UnpackedTarball/poppler/poppler/StdinCachedFile \ + UnpackedTarball/poppler/poppler/StdinPDFDocBuilder \ + UnpackedTarball/poppler/poppler/Sound \ + UnpackedTarball/poppler/poppler/ViewerPreferences \ + UnpackedTarball/poppler/poppler/XpdfPluginAPI \ + UnpackedTarball/poppler/poppler/Movie \ + UnpackedTarball/poppler/poppler/Rendition \ + UnpackedTarball/poppler/poppler/DCTStream \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index 94c8eb650dbc..f29933618b18 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -12,12 +12,8 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,poppler)) $(eval $(call gb_UnpackedTarball_set_tarball,poppler,$(POPPLER_TARBALL),,poppler)) $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ - external/poppler/poppler-notests.patch.1 \ $(if $(filter MSC-120,$(COM)-$(VCVER)),external/poppler/poppler-snprintf.patch.1) \ - external/poppler/poppler-mac-fake.patch.1 \ - external/poppler/ubsan.patch.0 \ - external/poppler/poppler-libjpeg.patch.1 \ - external/poppler/0001-Fix-building-with-old-clang.patch.1 \ + external/poppler/poppler-config.patch.1 \ )) # vim: set noet sw=4 ts=4: diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 new file mode 100644 index 000000000000..5328e680e2f2 --- /dev/null +++ b/external/poppler/poppler-config.patch.1 @@ -0,0 +1,484 @@ +*three* poppler config headers + +mkdir build && cd build && cmake .. -DENABLE_DCTDECODER=libjpeg -DHAVE_CAIRO=off -DENABLE_LIBOPENJPEG=none -DENABLE_CMS=none -DENABLE_LIBCURL=off -DENABLE_ZLIB=off -DENABLE_ZLIB_UNCOMPRESS=off -DENABLE_NSS3=off -DENABLE_LIBPNG=off -DENABLE_LIBTIFF=off -DENABLE_SPLASH=off -DENABLE_UTILS=off -DENABLE_CPP=off -DENABLE_GLIB=off -DENABLE_GOBJECT_INTROSPECTION=off -DENABLE_GTK_DOC=off -DENABLE_QT5=off + +manually disabled these because cmake failed to do it: +HAVE_CAIRO +ENABLE_NSS3 +ENABLE_LIBPNG (twice!) +ENABLE_LIBTIFF (twice!) +ENABLE_LIBCURL + +diff --git a/config.h b/config.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/config.h +@@ -0,0 +1,248 @@ ++/* config.h. Generated from config.h.cmake by cmake. */ ++ ++/* Build against libcurl. */ ++/* #undef ENABLE_LIBCURL */ ++ ++/* Use libjpeg instead of builtin jpeg decoder. */ ++#define ENABLE_LIBJPEG 1 ++ ++/* Use libopenjpeg instead of builtin jpeg2000 decoder. */ ++/* #undef ENABLE_LIBOPENJPEG */ ++ ++/* Build against libtiff. */ ++/* #define ENABLE_LIBTIFF 1 */ ++ ++/* Build against libpng. */ ++/* #define ENABLE_LIBPNG 1 */ ++ ++/* Do not hardcode the library location */ ++/* #undef ENABLE_RELOCATABLE */ ++ ++/* Build against zlib. */ ++/* #undef ENABLE_ZLIB */ ++ ++/* Use zlib instead of builtin zlib decoder to uncompress flate streams. */ ++/* #undef ENABLE_ZLIB_UNCOMPRESS */ ++ ++/* Build against libnss3 for digital signature validation */ ++/* #define ENABLE_NSS3 1 */ ++ ++/* Use cairo for rendering. */ ++/* #define HAVE_CAIRO 1 */ ++ ++/* Do we have any DCT decoder?. */ ++#define HAVE_DCT_DECODER 1 ++ ++/* Do we have any JPX decoder?. */ ++/* #undef HAVE_JPX_DECODER */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. ++ */ ++#define HAVE_DIRENT_H 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the <dlfcn.h> header file. */ ++#define HAVE_DLFCN_H 1 ++#endif ++ ++/* Define to 1 if you have the <fcntl.h> header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Define to 1 if you have the `fseek64' function. */ ++/* #undef HAVE_FSEEK64 */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ ++#define HAVE_FSEEKO 1 ++#endif ++ ++/* Define to 1 if you have the `ftell64' function. */ ++/* #undef HAVE_FTELL64 */ ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the `pread64' function. */ ++#define HAVE_PREAD64 1 ++#endif ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the `lseek64' function. */ ++#define HAVE_LSEEK64 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if gettimeofday is available on your system */ ++#define HAVE_GETTIMEOFDAY 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if gmtime_r is available on your system */ ++#define HAVE_GMTIME_R 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if timegm is available on your system */ ++#define HAVE_TIMEGM 1 ++#endif ++ ++/* Define if you have the iconv() function and it works. */ ++/* #undef HAVE_ICONV */ ++ ++/* Define to 1 if you have the `z' library (-lz). */ ++/* #undef HAVE_LIBZ */ ++ ++#if !defined(_WIN32) ++/* Defines if localtime_r is available on your system */ ++#define HAVE_LOCALTIME_R 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `mkstemp' function. */ ++#define HAVE_MKSTEMP 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `rand_r' function. */ ++#define HAVE_RAND_R 1 ++#endif ++ ++#if defined(_WIN32) ++/* Define to 1 if you have the `strcpy_s' function. */ ++#define HAVE_STRCPY_S 1 ++#endif ++ ++#if defined(_WIN32) ++/* Define to 1 if you have the `strcat_s' function. */ ++#define HAVE_STRCAT_S 1 ++#endif ++ ++#if !defined(_WIN32) ++/* Defines if strtok_r is available on your system */ ++#define HAVE_STRTOK_R 1 ++#endif ++ ++/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ ++/* #undef HAVE_NDIR_H */ ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the `popen' function. */ ++#define HAVE_POPEN 1 ++#endif ++ ++/* Use splash for rendering. */ ++/* #undef HAVE_SPLASH */ ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. ++ */ ++#define HAVE_SYS_DIR_H 1 ++#endif ++ ++#if !defined(__APPLE__) && !defined(_WIN32) ++/* Define to 1 if you have the <sys/mman.h> header file. */ ++#define HAVE_SYS_MMAN_H 1 ++#endif ++ ++/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. ++ */ ++/* #undef HAVE_SYS_NDIR_H */ ++ ++/* Define to 1 if you have the <sys/stat.h> header file. */ ++#define HAVE_SYS_STAT_H 1 ++ ++#if !defined(_WIN32) ++/* Define to 1 if you have the <unistd.h> header file. */ ++#define HAVE_UNISTD_H 1 ++#endif ++ ++/* Define to 1 if you have a big endian machine */ ++/* #undef WORDS_BIGENDIAN */ ++ ++/* Define as const if the declaration of iconv() needs const. */ ++#define ICONV_CONST ++ ++/* Enable multithreading support. */ ++#define MULTITHREADED 1 ++ ++/* Generate OPI comments in PS output. */ ++#define OPI_SUPPORT 1 ++ ++/* Name of package */ ++#define PACKAGE "poppler" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=poppler" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "poppler" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "poppler 0.66.0" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "poppler" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "0.66.0" ++ ++/* Poppler data dir */ ++#define POPPLER_DATADIR "/usr/local/share/poppler" ++ ++/* Support for curl based doc builder is compiled in. */ ++/* #undef POPPLER_HAS_CURL_SUPPORT */ ++ ++/* Include support for CMYK rasterization */ ++/* #undef SPLASH_CMYK */ ++ ++/* Enable word list support. */ ++#define TEXTOUT_WORD_LIST 1 ++ ++/* Defines if use cms */ ++/* #undef USE_CMS */ ++ ++/* Use fixed point arithmetic in the Splash backend */ ++/* #undef USE_FIXEDPOINT */ ++ ++/* Use single precision arithmetic in the Splash backend */ ++/* #undef USE_FLOAT */ ++ ++/* Version number of package */ ++#define VERSION "0.66.0" ++ ++#if defined(__APPLE__) ++#elif defined (_WIN32) ++/* Use win32 font configuration backend */ ++#define WITH_FONTCONFIGURATION_WIN32 1 ++#else ++/* Use fontconfig font configuration backend */ ++#define WITH_FONTCONFIGURATION_FONTCONFIG 1 ++#endif ++ ++/* OpenJPEG with the OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG flag */ ++/* #undef WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG */ ++ ++/* MS defined snprintf as deprecated but then added it in Visual Studio 2015. */ ++#if defined(_MSC_VER) && _MSC_VER < 1900 ++#define snprintf _snprintf ++#endif ++ ++//------------------------------------------------------------------------ ++// popen ++//------------------------------------------------------------------------ ++#if defined(_MSC_VER) || defined(__BORLANDC__) ++#define popen _popen ++#define pclose _pclose ++#endif ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++/* #undef _FILE_OFFSET_BITS */ ++ ++/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ ++/* TODO This is wrong, port if needed #undef _LARGEFILE_SOURCE */ ++ ++/* Define for large files, on AIX-style hosts. */ ++/* TODO This is wrong, port if needed #undef _LARGE_FILES */ +diff --git a/poppler/poppler-config.h b/poppler/poppler-config.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/poppler/poppler-config.h +@@ -0,0 +1,168 @@ ++//================================================= -*- mode: c++ -*- ==== ++// ++// poppler-config.h ++// ++// Copyright 1996-2011 Glyph & Cog, LLC ++// ++//======================================================================== ++ ++//======================================================================== ++// ++// Modified under the Poppler project - http://poppler.freedesktop.org ++// ++// All changes made under the Poppler project to this file are licensed ++// under GPL version 2 or later ++// ++// Copyright (C) 2014 Bogdan Cristea <crist...@gmail.com> ++// Copyright (C) 2014 Hib Eris <h...@hiberis.nl> ++// Copyright (C) 2016 Tor Lillqvist <t...@collabora.com> ++// Copyright (C) 2017 Adrian Johnson <ajohn...@redneon.com> ++// ++// To see a description of the changes please see the Changelog file that ++// came with your tarball or type make ChangeLog if you are building from git ++// ++//======================================================================== ++ ++#ifndef POPPLER_CONFIG_H ++#define POPPLER_CONFIG_H ++ ++// We duplicate some of the config.h #define's here since they are ++// used in some of the header files we install. The #ifndef/#endif ++// around #undef look odd, but it's to silence warnings about ++// redefining those symbols. ++ ++/* Defines the poppler version. */ ++#ifndef POPPLER_VERSION ++#define POPPLER_VERSION "0.66.0" ++#endif ++ ++/* Enable multithreading support. */ ++#ifndef MULTITHREADED ++#define MULTITHREADED 1 ++#endif ++ ++/* Use fixedpoint. */ ++#ifndef USE_FIXEDPOINT ++/* #undef USE_FIXEDPOINT */ ++#endif ++ ++/* Use single precision arithmetic in the Splash backend */ ++#ifndef USE_FLOAT ++/* #undef USE_FLOAT */ ++#endif ++ ++/* Include support for OPI comments. */ ++#ifndef OPI_SUPPORT ++#define OPI_SUPPORT 1 ++#endif ++ ++/* Enable word list support. */ ++#ifndef TEXTOUT_WORD_LIST ++#define TEXTOUT_WORD_LIST 1 ++#endif ++ ++/* Support for curl is compiled in. */ ++#ifndef POPPLER_HAS_CURL_SUPPORT ++/* #undef POPPLER_HAS_CURL_SUPPORT */ ++#endif ++ ++/* Use libjpeg instead of builtin jpeg decoder. */ ++#ifndef ENABLE_LIBJPEG ++#define ENABLE_LIBJPEG 1 ++#endif ++ ++/* Build against libtiff. */ ++#ifndef ENABLE_LIBTIFF ++/* #define ENABLE_LIBTIFF 1 */ ++#endif ++ ++/* Build against libpng. */ ++#ifndef ENABLE_LIBPNG ++/* #define ENABLE_LIBPNG 1 */ ++#endif ++ ++/* Use zlib instead of builtin zlib decoder. */ ++#ifndef ENABLE_ZLIB ++/* #undef ENABLE_ZLIB */ ++#endif ++ ++/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_DIRENT_H ++#if !defined(_WIN32) ++#define HAVE_DIRENT_H 1 ++#endif ++#endif ++ ++/* Defines if gettimeofday is available on your system */ ++#ifndef HAVE_GETTIMEOFDAY ++#if !defined(_WIN32) ++#define HAVE_GETTIMEOFDAY 1 ++#endif ++#endif ++ ++/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ ++#ifndef HAVE_NDIR_H ++/* #undef HAVE_NDIR_H */ ++#endif ++ ++/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_SYS_DIR_H ++#if !defined(__APPLE__) && !defined(_WIN32) ++#define HAVE_SYS_DIR_H 1 ++#endif ++#endif ++ ++/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. ++ */ ++#ifndef HAVE_SYS_NDIR_H ++/* #undef HAVE_SYS_NDIR_H */ ++#endif ++ ++/* Defines if use cms */ ++#ifndef USE_CMS ++/* #undef USE_CMS */ ++#endif ++ ++// Also, there are preprocessor symbols in the header files ++// that are used but never defined when building poppler using configure ++// or cmake: DISABLE_OUTLINE, DEBUG_MEM, ++// ENABLE_PLUGINS, DEBUG_FORMS ++ ++//------------------------------------------------------------------------ ++// version ++//------------------------------------------------------------------------ ++ ++// copyright notice ++#define popplerCopyright "Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org" ++#define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC" ++ ++//------------------------------------------------------------------------ ++// Win32 stuff ++//------------------------------------------------------------------------ ++ ++#if defined(_WIN32) && !defined(_MSC_VER) ++#include <windef.h> ++#else ++#define CDECL ++#endif ++ ++//------------------------------------------------------------------------ ++// Compiler ++//------------------------------------------------------------------------ ++ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) ++#include <stdio.h> // __MINGW_PRINTF_FORMAT is defined in the mingw stdio.h ++#ifdef __MINGW_PRINTF_FORMAT ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) \ ++ __attribute__((__format__(__MINGW_PRINTF_FORMAT, fmt_index, va_index))) ++#else ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) \ ++ __attribute__((__format__(__printf__, fmt_index, va_index))) ++#endif ++#else ++#define GCC_PRINTF_FORMAT(fmt_index, va_index) ++#endif ++ ++#endif /* POPPLER_CONFIG_H */ +diff --git a/cpp/poppler-version.h b/cpp/poppler-version.h +new file mode 100644 +index 0fbd336a..451213f8 100644 +--- /dev/null ++++ b/cpp/poppler-version.h +@@ -0,0 +1,39 @@ ++/* ++ * Copyright (C) 2009, Pino Toscano <p...@kde.org> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2, or (at your option) ++ * any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++#ifndef POPPLER_VERSION_H ++#define POPPLER_VERSION_H ++ ++#include "poppler-global.h" ++ ++#define POPPLER_VERSION "0.66.0" ++#define POPPLER_VERSION_MAJOR 0 ++#define POPPLER_VERSION_MINOR 66 ++#define POPPLER_VERSION_MICRO 0 ++ ++namespace poppler ++{ ++ ++POPPLER_CPP_EXPORT std::string version_string(); ++POPPLER_CPP_EXPORT unsigned int version_major(); ++POPPLER_CPP_EXPORT unsigned int version_minor(); ++POPPLER_CPP_EXPORT unsigned int version_micro(); ++ ++} ++ ++#endif diff --git a/external/poppler/poppler-libjpeg.patch.1 b/external/poppler/poppler-libjpeg.patch.1 deleted file mode 100644 index c8d54beb75ae..000000000000 --- a/external/poppler/poppler-libjpeg.patch.1 +++ /dev/null @@ -1,23 +0,0 @@ -do not override user supplied LIBJPEG_LIBS so we can use the one in WORKDIR - ---- poppler/configure.orig 2016-11-02 13:58:32.530617038 +0100 -+++ poppler/configure 2016-11-02 13:58:06.233617689 +0100 -@@ -21377,8 +21377,9 @@ - ac_save_USER_INCLUDES="$USER_INCLUDES" - ac_save_USER_LDFLAGS="$USER_LDFLAGS" - USER_INCLUDES="$USER_INCLUDES $LIBJPEG_CFLAGS" -- USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_CFLAGS" -+ USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_LIBS" - -+if test -z "$LIBJPEG_LIBS"; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libjpeg6b" >&5 - $as_echo_n "checking for libjpeg6b... " >&6; } -@@ -21489,6 +21490,7 @@ - - - fi -+fi - - - ac_save_CPPFLAGS="$CPPFLAGS" diff --git a/external/poppler/poppler-mac-fake.patch.1 b/external/poppler/poppler-mac-fake.patch.1 deleted file mode 100644 index d0b1936658ca..000000000000 --- a/external/poppler/poppler-mac-fake.patch.1 +++ /dev/null @@ -1,13 +0,0 @@ -diff -ur poppler.org/poppler/GlobalParams.cc poppler/poppler/GlobalParams.cc ---- poppler.org/poppler/GlobalParams.cc 2013-07-09 06:24:38.000000000 -0500 -+++ poppler/poppler/GlobalParams.cc 2013-07-09 06:25:18.000000000 -0500 -@@ -1327,7 +1327,7 @@ - return path; - } - --#elif WITH_FONTCONFIGURATION_WIN32 -+#elif WITH_FONTCONFIGURATION_WIN32 && defined(_WIN32) - #include "GlobalParamsWin.cc" - - GooString *GlobalParams::findBase14FontFile(GooString *base14Name, GfxFont *font) { - diff --git a/external/poppler/poppler-notests.patch.1 b/external/poppler/poppler-notests.patch.1 deleted file mode 100644 index ffac17312959..000000000000 --- a/external/poppler/poppler-notests.patch.1 +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Makefile.in -+++ b/Makefile.in -@@ -483,7 +483,7 @@ - @BUILD_POPPLER_QT4_TRUE@qt4_pc_file = poppler-qt4.pc - @BUILD_POPPLER_CPP_TRUE@cpp_subdir = cpp - @BUILD_POPPLER_CPP_TRUE@cpp_pc_file = poppler-cpp.pc --SUBDIRS = goo fofi $(splash_subdir) poppler utils $(glib_subdir) test $(qt4_subdir) $(qt5_subdir) $(cpp_subdir) -+SUBDIRS = goo fofi $(splash_subdir) poppler utils $(glib_subdir) $(qt4_subdir) $(qt5_subdir) $(cpp_subdir) - - # Add CMake buildsystem files here so they get added on make dist - EXTRA_DIST = README-XPDF poppler.pc.in poppler-uninstalled.pc.in \ diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 deleted file mode 100644 index f6e4667dc133..000000000000 --- a/external/poppler/ubsan.patch.0 +++ /dev/null @@ -1,230 +0,0 @@ ---- poppler/Form.cc -+++ poppler/Form.cc -@@ -463,12 +463,11 @@ - // FormField - //======================================================================== - --FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, std::set<int> *usedParents, FormFieldType ty) -+FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, FormFieldType ty) - { - doc = docA; - xref = doc->getXRef(); - obj = aobj->copy(); -- Dict* dict = obj.getDict(); - ref.num = ref.gen = 0; - type = ty; - parent = parentA; -@@ -483,7 +482,11 @@ - hasQuadding = gFalse; - - ref = aref; -+} - -+void FormField::init(std::set<int> *usedParents) -+{ -+ Dict* dict = obj.getDict(); - //childs - Object obj1 = dict->lookup("Kids"); - if (obj1.isArray()) { -@@ -803,9 +806,15 @@ - //------------------------------------------------------------------------ - // FormFieldButton - //------------------------------------------------------------------------ --FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formButton) -+FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formButton) - { -+} -+ -+void FormFieldButton::init(std::set<int> *usedParents) -+{ -+ FormField::init(usedParents); -+ - Dict* dict = obj.getDict(); - active_child = -1; - noAllOff = false; -@@ -983,9 +992,15 @@ - //------------------------------------------------------------------------ - // FormFieldText - //------------------------------------------------------------------------ --FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formText) -+FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formText) - { -+} -+ -+void FormFieldText::init(std::set<int> *usedParents) -+{ -+ FormField::init(usedParents); -+ - Dict* dict = obj.getDict(); - Object obj1; - content = NULL; -@@ -1076,9 +1091,15 @@ - //------------------------------------------------------------------------ - // FormFieldChoice - //------------------------------------------------------------------------ --FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) -- : FormField(docA, aobj, ref, parent, usedParents, formChoice) -+FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) -+ : FormField(docA, aobj, ref, parent, formChoice) - { -+} -+ -+void FormFieldChoice::init(std::set<int> *usedParents) -+{ -+ FormField::init(usedParents); -+ - numChoices = 0; - choices = NULL; - editedChoice = NULL; -@@ -1379,11 +1400,17 @@ - //------------------------------------------------------------------------ - // FormFieldSignature - //------------------------------------------------------------------------ --FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) -- : FormField(docA, dict, ref, parent, usedParents, formSignature), -+FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent) -+ : FormField(docA, dict, ref, parent, formSignature), - signature_type(adbe_pkcs7_detached), - signature(nullptr), signature_info(nullptr) - { -+} -+ -+void FormFieldSignature::init(std::set<int> *usedParents) -+{ -+ FormField::init(usedParents); -+ - signature = NULL; - - signature_info = new SignatureInfo(); -@@ -1691,15 +1718,15 @@ - - Object obj2 = Form::fieldLookup(obj->getDict (), "FT"); - if (obj2.isName("Btn")) { -- field = new FormFieldButton(docA, obj, pref, parent, usedParents); -+ field = FormFieldButton::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Tx")) { -- field = new FormFieldText(docA, obj, pref, parent, usedParents); -+ field = FormFieldText::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Ch")) { -- field = new FormFieldChoice(docA, obj, pref, parent, usedParents); -+ field = FormFieldChoice::create(docA, obj, pref, parent, usedParents); - } else if (obj2.isName("Sig")) { -- field = new FormFieldSignature(docA, obj, pref, parent, usedParents); -+ field = FormFieldSignature::create(docA, obj, pref, parent, usedParents); - } else { //we don't have an FT entry => non-terminal field -- field = new FormField(docA, obj, pref, parent, usedParents); -+ field = FormField::create(docA, obj, pref, parent, usedParents); - } - - return field; ---- poppler/Form.h -+++ poppler/Form.h -@@ -264,8 +264,16 @@ - //------------------------------------------------------------------------ - - class FormField { --public: -- FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set<int> *usedParents, FormFieldType t=formUndef); -+protected: -+ FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, FormFieldType t); -+ void init(std::set<int> *usedParents); -+public: -+ static FormField *create(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set<int> *usedParents, FormFieldType t=formUndef) -+ { -+ FormField *f = new FormField(docA, aobj, aref, parent, t); -+ f->init(usedParents); -+ return f; -+ } - - virtual ~FormField(); - -@@ -338,8 +346,16 @@ - //------------------------------------------------------------------------ - - class FormFieldButton: public FormField { --public: -- FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); -+private: -+ FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set<int> *usedParents); -+public: -+ static FormFieldButton *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) -+ { -+ FormFieldButton *f = new FormFieldButton(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - FormButtonType getButtonType () { return btype; } - -@@ -384,8 +400,16 @@ - //------------------------------------------------------------------------ - - class FormFieldText: public FormField { --public: -- FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); -+private: -+ FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set<int> *usedParents); -+public: -+ static FormFieldText *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) -+ { -+ FormFieldText *f = new FormFieldText(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - GooString* getContent () { return content; } - GooString* getContentCopy (); -@@ -422,8 +446,16 @@ - //------------------------------------------------------------------------ - - class FormFieldChoice: public FormField { --public: -- FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents); -+private: -+ FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent); -+ void init(std::set<int> *usedParents); -+public: -+ static FormFieldChoice *create(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) -+ { -+ FormFieldChoice *f = new FormFieldChoice(docA, aobj, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - ~FormFieldChoice(); - -@@ -491,8 +523,16 @@ - - class FormFieldSignature: public FormField { - friend class FormWidgetSignature; --public: -- FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); -+private: -+ FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); -+ void init(std::set<int> *usedParents); -+public: -+ static FormFieldSignature *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) -+ { -+ FormFieldSignature *f = new FormFieldSignature(docA, dict, ref, parent); -+ f->init(usedParents); -+ return f; -+ } - - // Use -1 for now as validationTime - SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime); ---- poppler/XRef.cc -+++ poppler/XRef.cc -@@ -293,6 +293,7 @@ - xRefStream = gFalse; - scannedSpecialFlags = gFalse; - encrypted = gFalse; -+ encAlgorithm = cryptRC4; - permFlags = defPermFlags; - ownerPasswordOk = gFalse; - rootNum = -1; commit b21a87eebf8b72a70ec7788d883cd75e485a2eca Author: David Tardon <dtar...@redhat.com> Date: Thu Sep 7 15:50:09 2017 +0200 upload poppler 0.59.0 Change-Id: I21dfa3aa04bd960cb2fb87a53213ae4bbd510a24 Reviewed-on: https://gerrit.libreoffice.org/42061 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: David Tardon <dtar...@redhat.com> (cherry picked from commit 1c983335116a6f09cabf0b3eae7f51951111341e) Reviewed-on: https://gerrit.libreoffice.org/56256 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/download.lst b/download.lst index ccd5e8b3b1bd..5677ab58e433 100644 --- a/download.lst +++ b/download.lst @@ -129,8 +129,8 @@ export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748 export PNG_TARBALL := libpng-1.6.28.tar.gz -export POPPLER_MD5SUM := f7a8230626b6d2061acfdc852930b7dd -export POPPLER_TARBALL := poppler-0.55.0.tar.xz +export POPPLER_MD5SUM := 6e44408a3b4f4a738f8a6770d0aea8a5 +export POPPLER_TARBALL := poppler-0.59.0.tar.xz export POSTGRESQL_TARBALL := c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2 ifeq ($(PYTHON_VERSION_MINOR),3) diff --git a/external/poppler/0001-Fix-building-with-old-clang.patch.1 b/external/poppler/0001-Fix-building-with-old-clang.patch.1 new file mode 100644 index 000000000000..dcddd11d2967 --- /dev/null +++ b/external/poppler/0001-Fix-building-with-old-clang.patch.1 @@ -0,0 +1,25 @@ +From dd80c182cbcb188af0dd590f222ba9bbb31e3fb7 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aa...@kde.org> +Date: Mon, 4 Sep 2017 19:36:06 +0200 +Subject: [PATCH] Fix building with old clang + +--- + poppler/StructElement.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/poppler/StructElement.cc b/poppler/StructElement.cc +index 0fbd336a..451213f8 100644 +--- a/poppler/StructElement.cc ++++ b/poppler/StructElement.cc +@@ -248,6 +248,8 @@ struct AttributeMapEntry { + }; + + struct AttributeDefaults { ++ AttributeDefaults() {}; // needed to support old clang ++ + Object Inline = Object(objName, "Inline"); + Object LrTb = Object(objName, "LrTb"); + Object Normal = Object(objName, "Normal"); +-- +2.13.5 + diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index f72c040c513b..94c8eb650dbc 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -17,6 +17,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/poppler-mac-fake.patch.1 \ external/poppler/ubsan.patch.0 \ external/poppler/poppler-libjpeg.patch.1 \ + external/poppler/0001-Fix-building-with-old-clang.patch.1 \ )) # vim: set noet sw=4 ts=4: diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 index e0bf164ce7fc..f6e4667dc133 100644 --- a/external/poppler/ubsan.patch.0 +++ b/external/poppler/ubsan.patch.0 @@ -9,7 +9,7 @@ { doc = docA; xref = doc->getXRef(); - aobj->copy(&obj); + obj = aobj->copy(); - Dict* dict = obj.getDict(); ref.num = ref.gen = 0; type = ty; @@ -23,9 +23,9 @@ +void FormField::init(std::set<int> *usedParents) +{ + Dict* dict = obj.getDict(); - Object obj1; //childs - if (dict->lookup("Kids", &obj1)->isArray()) { + Object obj1 = dict->lookup("Kids"); + if (obj1.isArray()) { @@ -803,9 +806,15 @@ //------------------------------------------------------------------------ // FormFieldButton @@ -80,14 +80,16 @@ numChoices = 0; choices = NULL; editedChoice = NULL; -@@ -1379,9 +1400,15 @@ +@@ -1379,11 +1400,17 @@ //------------------------------------------------------------------------ // FormFieldSignature //------------------------------------------------------------------------ -FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) -- : FormField(docA, dict, ref, parent, usedParents, formSignature) +- : FormField(docA, dict, ref, parent, usedParents, formSignature), +FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent) -+ : FormField(docA, dict, ref, parent, formSignature) ++ : FormField(docA, dict, ref, parent, formSignature), + signature_type(adbe_pkcs7_detached), + signature(nullptr), signature_info(nullptr) { +} + @@ -99,9 +101,9 @@ signature_info = new SignatureInfo(); @@ -1691,15 +1718,15 @@ - FormField *field; - if (Form::fieldLookup(obj->getDict (), "FT", &obj2)->isName("Btn")) { + Object obj2 = Form::fieldLookup(obj->getDict (), "FT"); + if (obj2.isName("Btn")) { - field = new FormFieldButton(docA, obj, pref, parent, usedParents); + field = FormFieldButton::create(docA, obj, pref, parent, usedParents); } else if (obj2.isName("Tx")) { @@ -117,8 +119,8 @@ - field = new FormField(docA, obj, pref, parent, usedParents); + field = FormField::create(docA, obj, pref, parent, usedParents); } - obj2.free(); + return field; --- poppler/Form.h +++ poppler/Form.h @@ -264,8 +264,16 @@ @@ -198,9 +200,9 @@ ~FormFieldChoice(); @@ -491,8 +523,16 @@ - //------------------------------------------------------------------------ class FormFieldSignature: public FormField { + friend class FormWidgetSignature; -public: - FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); +private: @@ -214,8 +216,8 @@ + return f; + } - SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation); - + // Use -1 for now as validationTime + SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime); --- poppler/XRef.cc +++ poppler/XRef.cc @@ -293,6 +293,7 @@ commit 135a80337da4549df6b0a5c14ad38e9edc0680f3 Author: David Tardon <dtar...@redhat.com> Date: Wed May 24 19:09:54 2017 +0200 upload poppler 0.55.0 Change-Id: I19b7d324a2dc50d006b4d255ddb6a5c1f15bc616 Reviewed-on: https://gerrit.libreoffice.org/37998 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: David Tardon <dtar...@redhat.com> (cherry picked from commit b12e16f8fc186117cbb20cc3866bf052a3d75515) Signed-off-by: David Tardon <dtar...@redhat.com> (cherry picked from commit 51775f495f0399177edbcabb2ad881cdd9f57e0f) Reviewed-on: https://gerrit.libreoffice.org/56255 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/download.lst b/download.lst index 18681926e860..ccd5e8b3b1bd 100644 --- a/download.lst +++ b/download.lst @@ -129,8 +129,8 @@ export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748 export PNG_TARBALL := libpng-1.6.28.tar.gz -export POPPLER_MD5SUM := 9e057ed8eee1f9979fa75d8f044783b8 -export POPPLER_TARBALL := poppler-0.49.0.tar.xz +export POPPLER_MD5SUM := f7a8230626b6d2061acfdc852930b7dd +export POPPLER_TARBALL := poppler-0.55.0.tar.xz export POSTGRESQL_TARBALL := c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2 ifeq ($(PYTHON_VERSION_MINOR),3) diff --git a/external/poppler/ExternalProject_poppler.mk b/external/poppler/ExternalProject_poppler.mk index 2a83b164ce4d..83d51b9ea9e7 100644 --- a/external/poppler/ExternalProject_poppler.mk +++ b/external/poppler/ExternalProject_poppler.mk @@ -28,7 +28,7 @@ $(call gb_ExternalProject_get_state_target,poppler,build) : --disable-shared \ --enable-xpdf-headers \ --disable-poppler-cpp \ - --disable-libopenjpeg \ + --enable-libopenjpeg=none \ --disable-libtiff \ --enable-libjpeg \ --disable-libpng \ diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 index 67675253b5ad..e0bf164ce7fc 100644 --- a/external/poppler/ubsan.patch.0 +++ b/external/poppler/ubsan.patch.0 @@ -195,7 +195,7 @@ + return f; + } - virtual ~FormFieldChoice(); + ~FormFieldChoice(); @@ -491,8 +523,16 @@ //------------------------------------------------------------------------ commit 9c458cb6de652edd48b84b25ccb22dab1b0b4f22 Author: David Tardon <dtar...@redhat.com> Date: Wed Nov 23 13:47:52 2016 +0100 upload poppler 0.49.0 Change-Id: I98508a1a2b57c7b39d5be3bf216271001b6a0427 Reviewed-on: https://gerrit.libreoffice.org/31111 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: David Tardon <dtar...@redhat.com> (cherry picked from commit 6f1ae11761ddfa2f928254ff51f1860155f670a4) Signed-off-by: David Tardon <dtar...@redhat.com> (cherry picked from commit b1d30ac04e95e72883c759110df6d5e46ce94510) Reviewed-on: https://gerrit.libreoffice.org/56254 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/download.lst b/download.lst index 958ed3048252..18681926e860 100644 --- a/download.lst +++ b/download.lst @@ -129,8 +129,8 @@ export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748 export PNG_TARBALL := libpng-1.6.28.tar.gz -export POPPLER_MD5SUM := 8d61c91cb9e99ad38bba1b0b4432f174 -export POPPLER_TARBALL := poppler-0.48.0.tar.xz +export POPPLER_MD5SUM := 9e057ed8eee1f9979fa75d8f044783b8 +export POPPLER_TARBALL := poppler-0.49.0.tar.xz export POSTGRESQL_TARBALL := c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2 ifeq ($(PYTHON_VERSION_MINOR),3) diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index afad5fba13b6..f72c040c513b 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -15,8 +15,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/poppler-notests.patch.1 \ $(if $(filter MSC-120,$(COM)-$(VCVER)),external/poppler/poppler-snprintf.patch.1) \ external/poppler/poppler-mac-fake.patch.1 \ - external/poppler/poppler-vs2013.patch.1 \ - external/poppler/poppler-0.46.0-std-max.patch.1 \ external/poppler/ubsan.patch.0 \ external/poppler/poppler-libjpeg.patch.1 \ )) diff --git a/external/poppler/poppler-0.46.0-std-max.patch.1 b/external/poppler/poppler-0.46.0-std-max.patch.1 deleted file mode 100644 index 96a9abe88695..000000000000 --- a/external/poppler/poppler-0.46.0-std-max.patch.1 +++ /dev/null @@ -1,10 +0,0 @@ ---- a/poppler/PSOutputDev.cc -+++ b/poppler/PSOutputDev.cc -@@ -48,6 +48,7 @@ - #include <signal.h> - #include <math.h> - #include <limits.h> -+#include <algorithm> - #include "goo/GooString.h" - #include "goo/GooList.h" - #include "goo/GooHash.h" diff --git a/external/poppler/poppler-vs2013.patch.1 b/external/poppler/poppler-vs2013.patch.1 deleted file mode 100644 index ca892dfc2500..000000000000 --- a/external/poppler/poppler-vs2013.patch.1 +++ /dev/null @@ -1,11 +0,0 @@ ---- poppler/poppler/poppler-config.h.in -+++ poppler/poppler/poppler-config.h.in -@@ -186,7 +186,7 @@ char * strtok_r (char *s, const char *delim, char **save_ptr); - #define GCC_PRINTF_FORMAT(fmt_index, va_index) - #endif - --#if defined(_MSC_VER) -+#if defined(_MSC_VER) && _MSC_VER < 1800 - #define fmax(a, b) std::max(a, b) - #define fmin(a, b) std::min(a, b) - #endif commit ae00e06b99d66fdf5306e73df8f85397fa0ab7c3 Author: Michael Stahl <mst...@redhat.com> Date: Thu Nov 3 11:13:29 2016 +0100 poppler: remove obsolete ubsan patch hunk With eea709f67d91e271e3df37e6c6724b7b5870b1ee "poppler: build against libjpeg" the poppler internal JPEG code is no longer used. Change-Id: I018a53a495ec505af92bb9b1c1a0c42e0a4f35b8 (cherry picked from commit 21ca0db5ec27662a3e047d7547eae9beb87b0b01) Reviewed-on: https://gerrit.libreoffice.org/56253 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 index 575cb47dc682..67675253b5ad 100644 --- a/external/poppler/ubsan.patch.0 +++ b/external/poppler/ubsan.patch.0 @@ -216,43 +216,6 @@ SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation); ---- poppler/Stream.cc -+++ poppler/Stream.cc -@@ -2966,12 +2966,12 @@ - } else { - amp = 0; - } -- data[0] += (*prevDC += amp) << scanInfo.al; -+ data[0] += (int) ((unsigned) (*prevDC += amp) << scanInfo.al); - } else { - if ((bit = readBit()) == 9999) { - return gFalse; - } -- data[0] += bit << scanInfo.al; -+ data[0] += (unsigned) bit << scanInfo.al; - } - ++i; - } -@@ -3064,7 +3064,7 @@ - j = dctZigZag[i++]; - } - } -- data[j] = amp << scanInfo.al; -+ data[j] = (unsigned) amp << scanInfo.al; - } - } - -@@ -3251,8 +3251,8 @@ - v3 = p[6]; - v4 = (dctSqrt1d2 * (p[1] - p[7]) + 128) >> 8; - v7 = (dctSqrt1d2 * (p[1] + p[7]) + 128) >> 8; -- v5 = p[3] << 4; -- v6 = p[5] << 4; -+ v5 = (unsigned) p[3] << 4; -+ v6 = (unsigned) p[5] << 4; - - // stage 3 - t = (v0 - v1+ 1) >> 1; --- poppler/XRef.cc +++ poppler/XRef.cc @@ -293,6 +293,7 @@ commit 2543b42096ad1be8d744eb3c9976f30add50bbb7 Author: David Tardon <dtar...@redhat.com> Date: Sat Oct 22 10:16:56 2016 +0200 upload poppler 0.48.0 Change-Id: I18c49505f71ab609e5cc0e4db759152c3c1d5825 (cherry picked from commit dc522a114d24ad7c550c072d4f29f50a62260b77) Reviewed-on: https://gerrit.libreoffice.org/56252 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/download.lst b/download.lst index 42ed25265e27..958ed3048252 100644 --- a/download.lst +++ b/download.lst @@ -129,8 +129,8 @@ export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2 export PIXMAN_TARBALL := c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748 export PNG_TARBALL := libpng-1.6.28.tar.gz -export POPPLER_MD5SUM := 38c758d84437378ec4f5aae9f875301d -export POPPLER_TARBALL := poppler-0.46.0.tar.bz2 +export POPPLER_MD5SUM := 8d61c91cb9e99ad38bba1b0b4432f174 +export POPPLER_TARBALL := poppler-0.48.0.tar.xz export POSTGRESQL_TARBALL := c0b4799ea9850eae3ead14f0a60e9418-postgresql-9.2.1.tar.bz2 ifeq ($(PYTHON_VERSION_MINOR),3) diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index efcbee7c7e0f..afad5fba13b6 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -17,7 +17,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/poppler-mac-fake.patch.1 \ external/poppler/poppler-vs2013.patch.1 \ external/poppler/poppler-0.46.0-std-max.patch.1 \ - external/poppler/poppler-0.46.0-unused-private-field.patch.1 \ external/poppler/ubsan.patch.0 \ external/poppler/poppler-libjpeg.patch.1 \ )) diff --git a/external/poppler/poppler-0.46.0-unused-private-field.patch.1 b/external/poppler/poppler-0.46.0-unused-private-field.patch.1 deleted file mode 100644 index e0765fc92251..000000000000 --- a/external/poppler/poppler-0.46.0-unused-private-field.patch.1 +++ /dev/null @@ -1,11 +0,0 @@ ---- a/goo/GooString.h -+++ b/goo/GooString.h -@@ -175,7 +175,7 @@ - // You can tweak the final object size for different time/space tradeoffs. - // In libc malloc(), rounding is 16 so it's best to choose a value that - // is a multiple of 16. -- class MemoryLayout { -+ struct MemoryLayout { - char c[sizeof(char*)]; - int i; - char* s; diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 index a27f00f790d2..575cb47dc682 100644 --- a/external/poppler/ubsan.patch.0 +++ b/external/poppler/ubsan.patch.0 @@ -1,14 +1,3 @@ ---- goo/GooString.cc -+++ goo/GooString.cc -@@ -161,7 +161,7 @@ - // assert(s != s1) the roundedSize condition ensures this - if (newLength < length) { - memcpy(s1, s, newLength); -- } else { -+ } else if (length != 0) { - memcpy(s1, s, length); - } - if (s != sStatic) --- poppler/Form.cc +++ poppler/Form.cc @@ -463,12 +463,11 @@ commit cd433c539d6f3915462851f5d3f5bc8e5c600a61 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Oct 14 15:34:53 2016 +0200 external/poppler: Avoid UBSan warning about undefined downcast ...of this-ptr of in-construction FormFieldSignature while still in the base FormField ctor, as happens (in the xpdfimport process) during CppunitTest_xmlsecurity_signing: > Form.cc:448:12: runtime error: downcast of address 0x60f000000040 which does not point to an object of type 'FormFieldSignature' > 0x60f000000040: note: object is of type 'FormField' > 03 00 00 6d 50 84 f2 00 00 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 01 be be be 07 00 00 00 > ^~~~~~~~~~~~~~~~~~~~~~~ > vptr for 'FormField' > #0 0x73d7f4 in FormWidgetSignature::FormWidgetSignature(PDFDoc*, Object*, unsigned int, Ref, FormField*) workdir/UnpackedTarball/poppler/poppler/Form.cc:448:12 > #1 0x741713 in FormField::_createWidget(Object*, Ref) workdir/UnpackedTarball/poppler/poppler/Form.cc:677:34 > #2 0x73e747 in FormField::FormField(PDFDoc*, Object*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*, FormFieldType) workdir/UnpackedTarball/poppler/poppler/Form.cc:547:7 > #3 0x74ec2b in FormFieldSignature::FormFieldSignature(PDFDoc*, Object*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1383:5 > #4 0x740d7f in Form::createFieldFromDict(Object*, PDFDoc*, Ref const&, FormField*, std::set<int, std::less<int>, std::allocator<int> >*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1700:19 > #5 0x750727 in Form::Form(PDFDoc*, Object*) workdir/UnpackedTarball/poppler/poppler/Form.cc:1623:33 > #6 0x71d440 in Catalog::getForm() workdir/UnpackedTarball/poppler/poppler/Catalog.cc:1042:18 > #7 0x708572 in Annots::createAnnot(Dict*, Object*) workdir/UnpackedTarball/poppler/poppler/Annot.cc:7218:41 > #8 0x70772b in Annots::Annots(PDFDoc*, int, Object*) workdir/UnpackedTarball/poppler/poppler/Annot.cc:7128:17 > #9 0x87f3e9 in Page::getAnnots(XRef*) workdir/UnpackedTarball/poppler/poppler/Page.cc:405:18 > #10 0x8814b0 in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:611:15 > #11 0x880ff6 in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/Page.cc:521:3 > #12 0x88d906 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) workdir/UnpackedTarball/poppler/poppler/PDFDoc.cc:491:20 > #13 0x5d59fb in main sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx:142:14 > #14 0x7f11600ea730 in __libc_start_main (/lib64/libc.so.6+0x20730) > #15 0x459388 in _start (instdir/program/xpdfimport+0x459388) Change-Id: Ia808919c8d2363d616feb4664f314a77b40dfbb8 (cherry picked from commit 55013a7776a43bb18b7fb8faa1839369c3383cb7) Reviewed-on: https://gerrit.libreoffice.org/56251 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/poppler/ubsan.patch.0 b/external/poppler/ubsan.patch.0 index 623858da9f1f..a27f00f790d2 100644 --- a/external/poppler/ubsan.patch.0 +++ b/external/poppler/ubsan.patch.0 @@ -9,6 +9,224 @@ memcpy(s1, s, length); } if (s != sStatic) +--- poppler/Form.cc ++++ poppler/Form.cc +@@ -463,12 +463,11 @@ + // FormField + //======================================================================== + +-FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, std::set<int> *usedParents, FormFieldType ty) ++FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parentA, FormFieldType ty) + { + doc = docA; + xref = doc->getXRef(); + aobj->copy(&obj); +- Dict* dict = obj.getDict(); + ref.num = ref.gen = 0; + type = ty; + parent = parentA; +@@ -483,7 +482,11 @@ + hasQuadding = gFalse; + + ref = aref; ++} + ++void FormField::init(std::set<int> *usedParents) ++{ ++ Dict* dict = obj.getDict(); + Object obj1; + //childs + if (dict->lookup("Kids", &obj1)->isArray()) { +@@ -803,9 +806,15 @@ + //------------------------------------------------------------------------ + // FormFieldButton + //------------------------------------------------------------------------ +-FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) +- : FormField(docA, aobj, ref, parent, usedParents, formButton) ++FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) ++ : FormField(docA, aobj, ref, parent, formButton) + { ++} ++ ++void FormFieldButton::init(std::set<int> *usedParents) ++{ ++ FormField::init(usedParents); ++ + Dict* dict = obj.getDict(); + active_child = -1; + noAllOff = false; +@@ -983,9 +992,15 @@ + //------------------------------------------------------------------------ + // FormFieldText + //------------------------------------------------------------------------ +-FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) +- : FormField(docA, aobj, ref, parent, usedParents, formText) ++FormFieldText::FormFieldText(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) ++ : FormField(docA, aobj, ref, parent, formText) + { ++} ++ ++void FormFieldText::init(std::set<int> *usedParents) ++{ ++ FormField::init(usedParents); ++ + Dict* dict = obj.getDict(); + Object obj1; + content = NULL; +@@ -1076,9 +1091,15 @@ + //------------------------------------------------------------------------ + // FormFieldChoice + //------------------------------------------------------------------------ +-FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) +- : FormField(docA, aobj, ref, parent, usedParents, formChoice) ++FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent) ++ : FormField(docA, aobj, ref, parent, formChoice) + { ++} ++ ++void FormFieldChoice::init(std::set<int> *usedParents) ++{ ++ FormField::init(usedParents); ++ + numChoices = 0; + choices = NULL; + editedChoice = NULL; +@@ -1379,9 +1400,15 @@ + //------------------------------------------------------------------------ + // FormFieldSignature + //------------------------------------------------------------------------ +-FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) +- : FormField(docA, dict, ref, parent, usedParents, formSignature) ++FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent) ++ : FormField(docA, dict, ref, parent, formSignature) + { ++} ++ ++void FormFieldSignature::init(std::set<int> *usedParents) ++{ ++ FormField::init(usedParents); ++ + signature = NULL; + + signature_info = new SignatureInfo(); +@@ -1691,15 +1718,15 @@ + FormField *field; + + if (Form::fieldLookup(obj->getDict (), "FT", &obj2)->isName("Btn")) { +- field = new FormFieldButton(docA, obj, pref, parent, usedParents); ++ field = FormFieldButton::create(docA, obj, pref, parent, usedParents); + } else if (obj2.isName("Tx")) { +- field = new FormFieldText(docA, obj, pref, parent, usedParents); ++ field = FormFieldText::create(docA, obj, pref, parent, usedParents); + } else if (obj2.isName("Ch")) { +- field = new FormFieldChoice(docA, obj, pref, parent, usedParents); ++ field = FormFieldChoice::create(docA, obj, pref, parent, usedParents); + } else if (obj2.isName("Sig")) { +- field = new FormFieldSignature(docA, obj, pref, parent, usedParents); ++ field = FormFieldSignature::create(docA, obj, pref, parent, usedParents); + } else { //we don't have an FT entry => non-terminal field +- field = new FormField(docA, obj, pref, parent, usedParents); ++ field = FormField::create(docA, obj, pref, parent, usedParents); + } + obj2.free(); + +--- poppler/Form.h ++++ poppler/Form.h +@@ -264,8 +264,16 @@ + //------------------------------------------------------------------------ + + class FormField { +-public: +- FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set<int> *usedParents, FormFieldType t=formUndef); ++protected: ++ FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, FormFieldType t); ++ void init(std::set<int> *usedParents); ++public: ++ static FormField *create(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *parent, std::set<int> *usedParents, FormFieldType t=formUndef) ++ { ++ FormField *f = new FormField(docA, aobj, aref, parent, t); ++ f->init(usedParents); ++ return f; ++ } + + virtual ~FormField(); + +@@ -338,8 +346,16 @@ + //------------------------------------------------------------------------ + + class FormFieldButton: public FormField { +-public: +- FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); ++private: ++ FormFieldButton(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); ++ void init(std::set<int> *usedParents); ++public: ++ static FormFieldButton *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) ++ { ++ FormFieldButton *f = new FormFieldButton(docA, dict, ref, parent); ++ f->init(usedParents); ++ return f; ++ } + + FormButtonType getButtonType () { return btype; } + +@@ -384,8 +400,16 @@ + //------------------------------------------------------------------------ + + class FormFieldText: public FormField { +-public: +- FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); ++private: ++ FormFieldText(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); ++ void init(std::set<int> *usedParents); ++public: ++ static FormFieldText *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) ++ { ++ FormFieldText *f = new FormFieldText(docA, dict, ref, parent); ++ f->init(usedParents); ++ return f; ++ } + + GooString* getContent () { return content; } + GooString* getContentCopy (); +@@ -422,8 +446,16 @@ + //------------------------------------------------------------------------ + + class FormFieldChoice: public FormField { +-public: +- FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents); ++private: ++ FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent); ++ void init(std::set<int> *usedParents); ++public: ++ static FormFieldChoice *create(PDFDoc *docA, Object *aobj, const Ref& ref, FormField *parent, std::set<int> *usedParents) ++ { ++ FormFieldChoice *f = new FormFieldChoice(docA, aobj, ref, parent); ++ f->init(usedParents); ++ return f; ++ } + + virtual ~FormFieldChoice(); + +@@ -491,8 +523,16 @@ + //------------------------------------------------------------------------ + + class FormFieldSignature: public FormField { +-public: +- FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents); ++private: ++ FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent); ++ void init(std::set<int> *usedParents); ++public: ++ static FormFieldSignature *create(PDFDoc *docA, Object *dict, const Ref& ref, FormField *parent, std::set<int> *usedParents) ++ { ++ FormFieldSignature *f = new FormFieldSignature(docA, dict, ref, parent); ++ f->init(usedParents); ++ return f; ++ } + + SignatureInfo *validateSignature(bool doVerifyCert, bool forceRevalidation); + --- poppler/Stream.cc +++ poppler/Stream.cc @@ -2966,12 +2966,12 @@ commit d91d8c927ede19e0b511cb2d7cfe127dd1195cfc Author: Thorsten Behrens <thorsten.behr...@cib.de> Date: Fri Jun 29 11:20:57 2018 +0200 Only supported MSVS version on this branch is VS2015 Due to 3rd party dependencies requiring better C++11 support Change-Id: Ic603ce6567e21f809eda042e981e4dc099b64f43 diff --git a/configure.ac b/configure.ac index 9bc526c6ed1c..3512693d23d5 100644 --- a/configure.ac +++ b/configure.ac @@ -2063,13 +2063,6 @@ AC_ARG_WITH(doxygen, documentation. Not relevant in the --disable-odk case.]), ,with_doxygen=yes) -AC_ARG_WITH(visual-studio, - AS_HELP_STRING([--with-visual-studio=<2013/2015>], - [Specify which Visual Studio version to use in case several are - installed. If not specified, only 2013 is detected automatically - because 2015 support is currently experimental.]), -,) - AC_ARG_WITH(windows-sdk, AS_HELP_STRING([--with-windows-sdk=<7.1(A)/8.0(A)/8.1(A)/10>], [Specify which Windows SDK, or "Windows Kit", version to use @@ -3292,8 +3285,8 @@ vs_versions_to_check() map_vs_year_to_version "$1" vsversions=$vsversion else - # By default we prefer 2013/2015, in this order - vsversions="12.0 14.0" + # Only support VS2015 going forward + vsversions="14.0" fi } commit 98fbf46c2e23772932b947db6e7812369d32e218 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Wed Feb 21 20:08:23 2018 -0500 Patch liborcus to avoid incorrect parsing of XML. Found by Antti Levomäki and Christian Jalio from Forcepoint. This one is not a backport from the master branch. On the master branch the same fix will come from updating liborcus from 0.13.3 to 0.13.4. (cherry picked from commit 160350de5f07024b22fb5a9b596918ccc7f22c75) Conflicts: external/liborcus/UnpackedTarball_liborcus.mk Reviewed-on: https://gerrit.libreoffice.org/50147 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> (cherry picked from commit f25bc1254782589af5d24471599260b65558154a) Conflicts: external/liborcus/UnpackedTarball_liborcus.mk Change-Id: I701c5a65ff67d77767913f8d056682b9db549f84 diff --git a/external/liborcus/0001-protect-the-self-closing-xml-element-code-against-se.patch b/external/liborcus/0001-protect-the-self-closing-xml-element-code-against-se.patch new file mode 100644 index 000000000000..990665f9c383 --- /dev/null +++ b/external/liborcus/0001-protect-the-self-closing-xml-element-code-against-se.patch @@ -0,0 +1,30 @@ +From 12e5d89cbd7101c61fbdf063322203a1590a0ef5 Mon Sep 17 00:00:00 2001 +From: Markus Mohrhard <markus.mohrh...@googlemail.com> +Date: Wed, 21 Feb 2018 00:29:03 +0100 +Subject: [PATCH] protect the self-closing xml element code against + self-closing root elements +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Found by Antti Levomäki and Christian Jalio from Forcepoint. +--- + include/orcus/sax_parser.hpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp +index ba5ebcd..67d5943 100644 +--- a/include/orcus/sax_parser.hpp ++++ b/include/orcus/sax_parser.hpp +@@ -171,6 +171,8 @@ void sax_parser<_Handler,_Config>::element_open(std::ptrdiff_t begin_pos) + m_handler.start_element(elem); + reset_buffer_pos(); + m_handler.end_element(elem); ++ if (!m_nest_level) ++ m_root_elem_open = false; + #if ORCUS_DEBUG_SAX_PARSER + cout << "element_open: ns='" << elem.ns << "', name='" << elem.name << "' (self-closing)" << endl; + #endif +-- +2.7.4 + diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk index 08f3423f2424..51f6e55e1de1 100644 --- a/external/liborcus/UnpackedTarball_liborcus.mk +++ b/external/liborcus/UnpackedTarball_liborcus.mk @@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,1)) $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ external/liborcus/0001-workaround-a-linking-problem-on-windows.patch \ external/liborcus/rpath.patch.0 \ + external/liborcus/0001-protect-the-self-closing-xml-element-code-against-se.patch \ )) ifeq ($(OS),WNT) commit d4679841c0cade5babb9b1c1a5938f2b6e3bfb91 Author: Michael Stahl <mst...@redhat.com> Date: Wed Jan 24 22:24:03 2018 +0100 curl: fix CVE-2018-1000005/1000007 * don't upgrade to new release, no idea how the new windows build system likes targeting Win XP which is still supported in 5.4 Change-Id: I4fbd7f1c5f1f0563895f6f8ede10063621d10a4b Reviewed-on: https://gerrit.libreoffice.org/48542 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Eike Rathke <er...@redhat.com> (cherry picked from commit ed497921314ebd41fce3483c92ca433b502628ca) diff --git a/external/curl/CVE-2018-1000005.patch b/external/curl/CVE-2018-1000005.patch new file mode 100644 index 000000000000..7b5578b1aacc --- /dev/null +++ b/external/curl/CVE-2018-1000005.patch @@ -0,0 +1,36 @@ +From fa3dbb9a147488a2943bda809c66fc497efe06cb Mon Sep 17 00:00:00 2001 +From: Zhouyihai Ding <ddyi...@ddyihai.svl.corp.google.com> +Date: Wed, 10 Jan 2018 10:12:18 -0800 +Subject: [PATCH] http2: fix incorrect trailer buffer size + +Prior to this change the stored byte count of each trailer was +miscalculated and 1 less than required. It appears any trailer +after the first that was passed to Curl_client_write would be truncated +or corrupted as well as the size. Potentially the size of some +subsequent trailer could be erroneously extracted from the contents of +that trailer, and since that size is used by client write an +out-of-bounds read could occur and cause a crash or be otherwise +processed by client write. + +The bug appears to have been born in 0761a51 (precedes 7.49.0). + +Closes https://github.com/curl/curl/pull/2231 +--- + lib/http2.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/http2.c b/lib/http2.c +index 8e2fc71996..699287940e 100644 +--- a/lib/http2.c ++++ b/lib/http2.c +@@ -925,8 +925,8 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame, + + if(stream->bodystarted) { + /* This is trailer fields. */ +- /* 3 is for ":" and "\r\n". */ +- uint32_t n = (uint32_t)(namelen + valuelen + 3); ++ /* 4 is for ": " and "\r\n". */ ++ uint32_t n = (uint32_t)(namelen + valuelen + 4); + + DEBUGF(infof(data_s, "h2 trailer: %.*s: %.*s\n", namelen, name, valuelen, + value)); diff --git a/external/curl/CVE-2018-1000007.patch b/external/curl/CVE-2018-1000007.patch new file mode 100644 index 000000000000..c474370c78ad --- /dev/null +++ b/external/curl/CVE-2018-1000007.patch @@ -0,0 +1,110 @@ +From af32cd3859336ab963591ca0df9b1e33a7ee066b Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg <dan...@haxx.se> +Date: Fri, 19 Jan 2018 13:19:25 +0100 +Subject: [PATCH] http: prevent custom Authorization headers in redirects + +... unless CURLOPT_UNRESTRICTED_AUTH is set to allow them. This matches how +curl already handles Authorization headers created internally. + +Note: this changes behavior slightly, for the sake of reducing mistakes. + +Added test 317 and 318 to verify. + +Reported-by: Craig de Stigter +Bug: https://curl.haxx.se/docs/adv_2018-b3bf.html +--- + docs/libcurl/opts/CURLOPT_HTTPHEADER.3 | 12 ++++- + lib/http.c | 10 +++- + lib/setopt.c | 2 +- + lib/urldata.h | 2 +- + tests/data/Makefile.inc | 2 +- + tests/data/test317 | 94 +++++++++++++++++++++++++++++++++ + tests/data/test318 | 95 ++++++++++++++++++++++++++++++++++ + 7 files changed, 212 insertions(+), 5 deletions(-) + create mode 100644 tests/data/test317 + create mode 100644 tests/data/test318 + +diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 +index c5ccb1a53d..c9f29e393e 100644 +--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 ++++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 +@@ -5,7 +5,7 @@ + .\" * | (__| |_| | _ <| |___ + .\" * \___|\___/|_| \_\_____| + .\" * +-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <dan...@haxx.se>, et al. ++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <dan...@haxx.se>, et al. + .\" * + .\" * This software is licensed as described in the file COPYING, which + .\" * you should have received as part of this distribution. The terms +@@ -77,6 +77,16 @@ the headers. They may be private or otherwise sensitive to leak. + + Use \fICURLOPT_HEADEROPT(3)\fP to make the headers only get sent to where you + intend them to get sent. ++ ++Custom headers are sent in all requests done by the easy handles, which ++implies that if you tell libcurl to follow redirects ++(\fBCURLOPT_FOLLOWLOCATION(3)\fP), the same set of custom headers will be sent ++in the subsequent request. Redirects can of course go to other hosts and thus ++those servers will get all the contents of your custom headers too. ++ ++Starting in 7.58.0, libcurl will specifically prevent "Authorization:" headers ++from being sent to other hosts than the first used one, unless specifically ++permitted with the \fBCURLOPT_UNRESTRICTED_AUTH(3)\fP option. + .SH DEFAULT + NULL + .SH PROTOCOLS +diff --git a/lib/http.c b/lib/http.c +index c1cdf2da02..a5007670d7 100644 +--- a/lib/http.c ++++ b/lib/http.c +@@ -714,7 +714,7 @@ Curl_http_output_auth(struct connectdata *conn, + if(!data->state.this_is_a_follow || + conn->bits.netrc || + !data->state.first_host || +- data->set.http_disable_hostname_check_before_authentication || ++ data->set.allow_auth_to_other_hosts || + strcasecompare(data->state.first_host, conn->host.name)) { + result = output_auth_headers(conn, authhost, request, path, FALSE); + } +@@ -1636,6 +1636,14 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn, + checkprefix("Transfer-Encoding:", headers->data)) + /* HTTP/2 doesn't support chunked requests */ + ; ++ else if(checkprefix("Authorization:", headers->data) && ++ /* be careful of sending this potentially sensitive header to ++ other hosts */ ++ (data->state.this_is_a_follow && ++ data->state.first_host && ++ !data->set.allow_auth_to_other_hosts && ++ !strcasecompare(data->state.first_host, conn->host.name))) ++ ; + else { + CURLcode result = Curl_add_bufferf(req_buffer, "%s\r\n", + headers->data); +diff --git a/lib/setopt.c b/lib/setopt.c +index 66f30ea653..a5ef75c722 100644 +--- a/lib/url.c ++++ b/lib/url.c +@@ -976,7 +976,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, + * Send authentication (user+password) when following locations, even when + * hostname changed. + */ +- data->set.http_disable_hostname_check_before_authentication = ++ data->set.allow_auth_to_other_hosts = + (0 != va_arg(param, long)) ? TRUE : FALSE; + break; + +diff --git a/lib/urldata.h b/lib/urldata.h +index 4dcd1a322c..5c04ad1720 100644 +--- a/lib/urldata.h ++++ b/lib/urldata.h +@@ -1599,7 +1599,7 @@ struct UserDefined { + bool http_keep_sending_on_error; /* for HTTP status codes >= 300 */ + bool http_follow_location; /* follow HTTP redirects */ + bool http_transfer_encoding; /* request compressed HTTP transfer-encoding */ +- bool http_disable_hostname_check_before_authentication; ++ bool allow_auth_to_other_hosts; + bool include_header; /* include received protocol headers in data output */ + bool http_set_referer; /* is a custom referer used */ + bool http_auto_referer; /* set "correct" referer when following location: */ diff --git a/external/curl/UnpackedTarball_curl.mk b/external/curl/UnpackedTarball_curl.mk index 4cabf2f1b80b..f9f3a8bf6016 100644 --- a/external/curl/UnpackedTarball_curl.mk +++ b/external/curl/UnpackedTarball_curl.mk @@ -24,6 +24,8 @@ $(eval $(call gb_UnpackedTarball_add_patches,curl,\ external/curl/curl-7.26.0_win-proxy.patch \ external/curl/curl-xp.patch.1 \ external/curl/CVE-2017-8816.patch \ + external/curl/CVE-2018-1000005.patch \ + external/curl/CVE-2018-1000007.patch \ )) ifeq ($(SYSTEM_NSS),) commit 2fee2505a74685360aa6707fef30e689955230ba Author: Michael Stahl <mst...@redhat.com> Date: Wed Nov 29 12:28:03 2017 +0100 curl: fix CVE-2017-8816 * don't upgrade to new release, no idea how the new windows build system likes targeting Win XP which is still supported in 5.4 * CVE-2017-8817 doesn't affect LO as CURLOPT_WILDCARDMATCH isn't used * CVE-2017-8818 doesn't affect the old 7.52 version Change-Id: I49ddb771ccdb93d5fe8f4b3544f74ab9b171c156 Reviewed-on: https://gerrit.libreoffice.org/45487 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> (cherry picked from commit aa0f44de5b260b2b2a39bdd2de9445d72ab14265) diff --git a/external/curl/CVE-2017-8816.patch b/external/curl/CVE-2017-8816.patch new file mode 100644 index 000000000000..dd4fa677e03f --- /dev/null +++ b/external/curl/CVE-2017-8816.patch @@ -0,0 +1,67 @@ +From 7947c50bcd09cf471c95511739bc66d2cb506ee2 Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg <dan...@haxx.se> +Date: Mon, 6 Nov 2017 23:51:52 +0100 +Subject: [PATCH] ntlm: avoid integer overflow for malloc size + +Reported-by: Alex Nichols +Assisted-by: Kamil Dudka and Max Dymond + +CVE-2017-8816 + +Bug: https://curl.haxx.se/docs/adv_2017-11e7.html +--- + lib/curl_ntlm_core.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c +index 1309bf0d9..e8962769c 100644 +--- a/lib/curl_ntlm_core.c ++++ b/lib/curl_ntlm_core.c +@@ -644,23 +644,42 @@ CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen, + Curl_HMAC_final(ctxt, output); + + return CURLE_OK; + } + ++#ifndef SIZE_T_MAX ++/* some limits.h headers have this defined, some don't */ ++#if defined(SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > 4) ++#define SIZE_T_MAX 18446744073709551615U ++#else ++#define SIZE_T_MAX 4294967295U ++#endif ++#endif ++ + /* This creates the NTLMv2 hash by using NTLM hash as the key and Unicode + * (uppercase UserName + Domain) as the data + */ + CURLcode Curl_ntlm_core_mk_ntlmv2_hash(const char *user, size_t userlen, + const char *domain, size_t domlen, + unsigned char *ntlmhash, + unsigned char *ntlmv2hash) + { + /* Unicode representation */ +- size_t identity_len = (userlen + domlen) * 2; +- unsigned char *identity = malloc(identity_len); ++ size_t identity_len; ++ unsigned char *identity; + CURLcode result = CURLE_OK; + ++ /* we do the length checks below separately to avoid integer overflow risk ++ on extreme data lengths */ ++ if((userlen > SIZE_T_MAX/2) || ++ (domlen > SIZE_T_MAX/2) || ++ ((userlen + domlen) > SIZE_T_MAX/2)) ++ return CURLE_OUT_OF_MEMORY; ++ ++ identity_len = (userlen + domlen) * 2; ++ identity = malloc(identity_len); ++ + if(!identity) + return CURLE_OUT_OF_MEMORY; + + ascii_uppercase_to_unicode_le(identity, user, userlen); + ascii_to_unicode_le(identity + (userlen << 1), domain, domlen); +-- +2.15.0 + diff --git a/external/curl/UnpackedTarball_curl.mk b/external/curl/UnpackedTarball_curl.mk index 6a5720d78459..4cabf2f1b80b 100644 --- a/external/curl/UnpackedTarball_curl.mk +++ b/external/curl/UnpackedTarball_curl.mk @@ -23,6 +23,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,curl,\ external/curl/curl-7.26.0_mingw.patch \ external/curl/curl-7.26.0_win-proxy.patch \ external/curl/curl-xp.patch.1 \ + external/curl/CVE-2017-8816.patch \ )) ifeq ($(SYSTEM_NSS),) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits