configure.ac | 4 download.lst | 846 +++++++++----- external/boost/include/boost/convert.hpp | 28 external/boost/include/boost/convert/stream.hpp | 28 external/nss/UnpackedTarball_nss.mk | 1 external/nss/Wincompatible-function-pointer-types.patch.0 | 234 +++ external/openldap/ExternalProject_openldap.mk | 13 external/openldap/UnpackedTarball_openldap.mk | 2 external/openldap/Wint-conversion.patch | 11 external/openldap/configure-c99.patch | 11 external/openldap/openldap-2.4.44.patch.1 | 12 external/poppler/README | 2 external/poppler/StaticLibrary_poppler.mk | 55 external/poppler/UnpackedTarball_poppler.mk | 8 external/poppler/clang-std-ranges.patch.1 | 394 ++++++ external/poppler/disable-freetype.patch.1 | 25 external/poppler/gcc7-EntityInfo.patch.1 | 51 external/poppler/gcc7-GfxFont.patch.1 | 94 + external/poppler/poppler-config.patch.1 | 48 external/poppler/std_charconv.patch.1 | 30 external/poppler/std_numbers.patch.1 | 30 external/poppler/std_span.patch.1 | 50 external/poppler/std_string.patch.1 | 110 + external/redland/UnpackedTarball_raptor.mk | 1 external/redland/raptor/Wint-conversion.patch | 22 include/o3tl/span.hxx | 16 package/source/zipapi/XUnbufferedStream.cxx | 4 sal/osl/unx/thread.cxx | 2 sal/rtl/hash.cxx | 2 sc/source/filter/xml/sheetdata.cxx | 2 sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx | 5 solenv/gbuild/partial_build.mk | 2 store/source/storbase.hxx | 1 sw/qa/extras/htmlexport/htmlexport.cxx | 10 34 files changed, 1809 insertions(+), 345 deletions(-)
New commits: commit 8b61031d81f82f4adecf0cb5140501b1d3515f02 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Wed Feb 19 10:56:10 2025 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:27 2025 +0100 libxml2: upgrade to 2.12.10 Downloaded from https://download.gnome.org/sources/libxml2/2.12/libxml2-2.12.10.tar.xz Change-Id: If12c5f81feaff5c938a1a308660009fe4504b3d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181877 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit cbf28a9456eaa6c8573f8c5e479d6665fded2a97) diff --git a/download.lst b/download.lst index 637e1e2accb5..654d1793505d 100644 --- a/download.lst +++ b/download.lst @@ -356,8 +356,8 @@ XMLSEC_TARBALL := xmlsec1-1.2.28.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -LIBXML_SHA256SUM := 59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590 -LIBXML_VERSION_MICRO := 9 +LIBXML_SHA256SUM := c3d8c0c34aa39098f66576fe51969db12a5100b956233dc56506f7a8679be995 +LIBXML_VERSION_MICRO := 10 LIBXML_TARBALL := libxml2-2.12.$(LIBXML_VERSION_MICRO).tar.xz # three static lines # so that git cherry-pick commit 009d3c74f4ef04d84d9d539b0237403139f7cc47 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Jan 7 18:45:34 2025 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:27 2025 +0100 poppler: upgrade to release 25.01 Fixes CVE-2024-56378 - remove disable-nss-and-gpgmepp.patch.1 and instead build CryptoSignBackend.cc which appears to have working ifdefs now - run the update_pch script - add clang-std-rotate.patch.1 because jenkins failed Change-Id: I7fcdd10766287e83dc666041644f129378584d91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179903 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit e28c5a2c93477d167eb449f08eca220cb3b26b31) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179958 Tested-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 3bb689dfbac211696029c767250e841f67711088) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180040 Tested-by: allotropia jenkins <jenk...@allotropia.de> (cherry picked from commit be6774fd28da7aab58647c9f0f869c92ce4425ef) diff --git a/download.lst b/download.lst index 128e7a6935b6..637e1e2accb5 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := 97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174 -POPPLER_TARBALL := poppler-24.08.0.tar.xz +POPPLER_SHA256SUM := 7eefc122207bbbd72a303c5e0743f4941e8ae861e24dcf0501e18ce1d1414112 +POPPLER_TARBALL := poppler-25.01.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index 20cb4001d196..d8e722fb9c3d 100644 --- a/external/poppler/StaticLibrary_poppler.mk +++ b/external/poppler/StaticLibrary_poppler.mk @@ -19,6 +19,7 @@ $(eval $(call gb_StaticLibrary_use_externals,poppler,\ $(eval $(call gb_StaticLibrary_set_warnings_disabled,poppler)) +# note: the "fofi" and "goo" subdirs are required for the PCH $(eval $(call gb_StaticLibrary_set_include,poppler,\ -I$(WORKDIR)/UnpackedTarball/poppler \ -I$(WORKDIR)/UnpackedTarball/poppler/fofi \ @@ -86,6 +87,7 @@ $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\ UnpackedTarball/poppler/poppler/CertificateInfo \ UnpackedTarball/poppler/poppler/CharCodeToUnicode \ UnpackedTarball/poppler/poppler/CMap \ + UnpackedTarball/poppler/poppler/CryptoSignBackend \ UnpackedTarball/poppler/poppler/DCTStream \ UnpackedTarball/poppler/poppler/DateInfo \ UnpackedTarball/poppler/poppler/Decrypt \ diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index 382e2e0f1d5f..4b92ef93be26 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -13,12 +13,13 @@ $(eval $(call gb_UnpackedTarball_set_tarball,poppler,$(POPPLER_TARBALL),,poppler $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/disable-freetype.patch.1 \ - external/poppler/disable-nss-and-gpgmepp.patch.1 \ external/poppler/gcc7-EntityInfo.patch.1 \ external/poppler/gcc7-GfxFont.patch.1 \ external/poppler/std_charconv.patch.1 \ external/poppler/std_string.patch.1 \ external/poppler/std_span.patch.1 \ + external/poppler/std_numbers.patch.1 \ + external/poppler/clang-std-ranges.patch.1 \ external/poppler/poppler-config.patch.1 \ )) diff --git a/external/poppler/clang-std-ranges.patch.1 b/external/poppler/clang-std-ranges.patch.1 new file mode 100644 index 000000000000..d7736089e9a8 --- /dev/null +++ b/external/poppler/clang-std-ranges.patch.1 @@ -0,0 +1,394 @@ +clang jenkins bot fails with: + +In file included from /home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/workdir/UnpackedTarball/poppler/splash/SplashFontEngine.cc:38: +In file included from /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/algorithm:60: +In file included from /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algobase.h:65: +In file included from /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_iterator_base_types.h:71: +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin' + = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>())); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here + using iterator_t = std::__detail::__range_iter_t<_Tp>; + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/ranges_util.h:121:36: note: in instantiation of template type alias 'iterator_t' requested here + requires contiguous_iterator<iterator_t<_Derived>> + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/ranges_util.h:228:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized>>' requested here + class subrange : public view_interface<subrange<_It, _Sent, _Kind>> + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/ranges_algo.h:1499:7: note: in instantiation of template class 'std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized>' requested here + operator()(_Range&& __r, iterator_t<_Range> __middle) const + ^ +/home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/workdir/UnpackedTarball/poppler/splash/SplashFontEngine.cc:246:24: note: in instantiation of function template specialization 'std::ranges::__rotate_fn::operator()<std::array<SplashFont *, 16> &>' requested here + std::ranges::rotate(fontCache, fontCache.end() - 1); + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:966:7: note: candidate template ignored: constraints not satisfied [with _Tp = std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized>] + __begin(_Tp& __t) + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:964:16: note: because 'is_array_v<std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized> >' evaluated to false + requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&> + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:964:35: note: and 'std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized> &' does not satisfy '__member_begin' + requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&> + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:947:23: note: because '__decay_copy(__t.begin())' would be invalid: no member named 'begin' in 'std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized>' + { __decay_copy(__t.begin()) } -> input_or_output_iterator; + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:964:59: note: and 'std::ranges::subrange<SplashFont **, SplashFont **, std::ranges::subrange_kind::sized> &' does not satisfy '__adl_begin' + requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&> + ^ +/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/iterator_concepts.h:958:19: note: because '__decay_copy(begin(__t))' would be invalid: call to deleted function 'begin' + { __decay_copy(begin(__t)) } -> input_or_output_iterator; + ^ + +--- poppler/splash/SplashFontEngine.cc.orig2 2025-01-08 10:58:44.891336796 +0100 ++++ poppler/splash/SplashFontEngine.cc 2025-01-08 11:02:24.548166442 +0100 +@@ -243,7 +243,11 @@ + if (fontCache.back()) { + delete fontCache.back(); + } ++#if 0//ndef __clang__ + std::ranges::rotate(fontCache, fontCache.end() - 1); ++#else ++ std::rotate(fontCache.begin(), fontCache.end() - 1, fontCache.end()); ++#endif + + fontCache[0] = newFont; + return fontCache[0]; +--- poppler/fofi/FoFiTrueType.cc.orig 2025-01-08 12:26:45.256494256 +0100 ++++ poppler/fofi/FoFiTrueType.cc 2025-01-08 12:22:26.462723118 +0100 +@@ -1160,12 +1160,20 @@ + locaTable[i].origOffset = glyfTableLen; + } + } ++#if 0//ndef __clang__ + std::ranges::sort(locaTable, cmpTrueTypeLocaOffsetFunctor()); ++#else ++ std::sort(locaTable.begin(), locaTable.end(), cmpTrueTypeLocaOffsetFunctor()); ++#endif + for (i = 0; i < nGlyphs; ++i) { + locaTable[i].len = locaTable[i + 1].origOffset - locaTable[i].origOffset; + } + locaTable[nGlyphs].len = 0; ++#if 0//ndef __clang__ + std::ranges::sort(locaTable, cmpTrueTypeLocaIdxFunctor()); ++#else ++ std::sort(locaTable.begin(), locaTable.end(), cmpTrueTypeLocaIdxFunctor()); ++#endif + pos = 0; + for (i = 0; i <= nGlyphs; ++i) { + locaTable[i].newOffset = pos; +--- poppler/poppler/CIDFontsWidthsBuilder.h.orig 2025-01-08 12:34:25.458714665 +0100 ++++ poppler/poppler/CIDFontsWidthsBuilder.h 2025-01-08 12:35:05.809036940 +0100 +@@ -89,7 +89,11 @@ + // How many elements at the end has this + int uniqueElementsFromEnd(int value) + { ++#if 0//ndef __clang__ + auto lastDifferent = std::ranges::find_if(std::ranges::reverse_view(m_values), [value](auto &&element) { return element != value; }); ++#else ++ auto lastDifferent = std::find_if(m_values.rbegin(), m_values.rend(), [value](auto &&element) { return element != value; }); ++#endif + return std::distance(m_values.rbegin(), lastDifferent); + } + +--- poppler/poppler/Dict.cc.orig 2025-01-08 12:17:07.701541557 +0100 ++++ poppler/poppler/Dict.cc 2025-01-08 12:29:29.609619053 +0100 +@@ -125,7 +125,11 @@ + return &*pos; + } + } else { ++#if 0//ndef __clang__ + const auto pos = std::ranges::find_if(std::ranges::reverse_view(entries), [key](const DictEntry &entry) { return entry.first == key; }); ++#else ++ const auto pos = std::find_if(entries.rbegin(), entries.rend(), [key](const DictEntry &entry) { return entry.first == key; }); ++#endif + if (pos != entries.rend()) { + return &*pos; + } +--- poppler/poppler/CIDFontsWidthsBuilder.h.orig2 2025-01-08 13:26:29.167797754 +0100 ++++ poppler/poppler/CIDFontsWidthsBuilder.h 2025-01-08 13:27:03.165988989 +0100 +@@ -152,7 +152,11 @@ + if (differentValues || m_values.size() < 4) { + std::vector<int> savedValues; + if (m_values.size() >= 4) { ++#if 0//ndef __clang__ + auto lastDifferent = std::ranges::find_if(std::ranges::reverse_view(m_values), [value = m_values.back()](auto &&element) { return element != value; }); ++#else ++ auto lastDifferent = std::find_if(m_values.rbegin(), m_values.rend(), [value = m_values.back()](auto &&element) { return element != value; }); ++#endif + if (std::distance(m_values.rbegin(), lastDifferent) >= 3) { + savedValues.push_back(m_values.back()); + m_values.pop_back(); +--- poppler/poppler/Dict.cc.orig 2025-01-09 17:07:59.770799229 +0100 ++++ poppler/poppler/Dict.cc 2025-01-09 17:04:28.369931616 +0100 +@@ -113,14 +113,22 @@ + if (!sorted) { + Dict *that = const_cast<Dict *>(this); + ++#if 0//ndef __clang__ + std::ranges::sort(that->entries, CmpDictEntry {}); ++#else ++ std::sort(that->entries.begin(), that->entries.end(), CmpDictEntry {}); ++#endif + that->sorted = true; + } + } + } + + if (sorted) { ++#if 0//ndef __clang__ + const auto pos = std::ranges::lower_bound(entries, key, std::less<> {}, &DictEntry::first); ++#else ++ const auto pos = std::lower_bound(entries.begin(), entries.end(), key, CmpDictEntry {}); ++#endif + if (pos != entries.end() && pos->first == key) { + return &*pos; + } +--- poppler/poppler/GlobalParams.cc.orig 2025-01-02 01:28:08.000000000 +0100 ++++ poppler/poppler/GlobalParams.cc 2025-01-09 17:13:51.367905376 +0100 +@@ -366,7 +366,11 @@ + for (const SysFontInfo *f : fonts) { + fi = f; + if (fi->match(name2, bold, italic, oblique, fixedWidth)) { ++#if 0//ndef __clang__ + if (std::ranges::find(filesToIgnore, fi->path->toStr()) == filesToIgnore.end()) { ++#else ++ if (std::find(filesToIgnore.begin(), filesToIgnore.end(), fi->path->toStr()) == filesToIgnore.end()) { ++#endif + break; + } + } +@@ -377,7 +381,11 @@ + for (const SysFontInfo *f : fonts) { + fi = f; + if (fi->match(name2, false, italic)) { ++#if 0//ndef __clang__ + if (std::ranges::find(filesToIgnore, fi->path->toStr()) == filesToIgnore.end()) { ++#else ++ if (std::find(filesToIgnore.begin(), filesToIgnore.end(), fi->path->toStr()) == filesToIgnore.end()) { ++#endif + break; + } + } +@@ -389,7 +397,11 @@ + for (const SysFontInfo *f : fonts) { + fi = f; + if (fi->match(name2, false, false)) { ++#if 0//ndef __clang__ + if (std::ranges::find(filesToIgnore, fi->path->toStr()) == filesToIgnore.end()) { ++#else ++ if (std::find(filesToIgnore.begin(), filesToIgnore.end(), fi->path->toStr()) == filesToIgnore.end()) { ++#endif + break; + } + } +@@ -737,7 +749,11 @@ + + // remove the - from the names, for some reason, Fontconfig does not + // understand "MS-Mincho" but does with "MS Mincho" ++#if 0//ndef __clang__ + std::ranges::replace(fontName, '-', ' '); ++#else ++ std::replace(fontName.begin(), fontName.end(), '-', ' '); ++#endif + + size_t start = std::string::npos; + findModifier(fontName, modStart, "Regular", start); +@@ -1120,7 +1136,11 @@ + FcPatternGetInteger(fontSet->fonts[i], FC_INDEX, 0, &faceIndex); + + const std::string sFilePath = reinterpret_cast<char *>(fcFilePath); ++#if 0//ndef __clang__ + if (std::ranges::find(filesToIgnore, sFilePath) == filesToIgnore.end()) { ++#else ++ if (std::find(filesToIgnore.begin(), filesToIgnore.end(), sFilePath) == filesToIgnore.end()) { ++#endif + return FamilyStyleFontSearchResult(sFilePath, faceIndex); + } + } +--- poppler/poppler/Catalog.cc.orig 2025-01-09 17:19:48.592089218 +0100 ++++ poppler/poppler/Catalog.cc 2025-01-09 17:19:36.361030948 +0100 +@@ -705,7 +705,11 @@ + RefRecursionChecker seen; + parse(tree, seen); + if (!entries.empty()) { ++#if 0//ndef __clang__ + std::ranges::sort(entries, [](const auto &first, const auto &second) { return first->name.cmp(&second->name) < 0; }); ++#else ++ std::sort(entries.begin(), entries.end(), [](const auto &first, const auto &second) { return first->name.cmp(&second->name) < 0; }); ++#endif + } + } + +@@ -754,7 +758,11 @@ + + Object NameTree::lookup(const GooString *name) + { ++#if 0//ndef __clang__ + auto entry = std::ranges::lower_bound(entries, name, EntryGooStringComparer {}); ++#else ++ auto entry = std::lower_bound(entries.begin(), entries.end(), name, [](const auto &element, const GooString *n) { return element->name.cmp(n) < 0; }); ++#endif + + if (entry != entries.end() && (*entry)->name.cmp(name) == 0) { + return (*entry)->value.fetch(xref); +--- poppler/poppler/GfxFont.cc.orig2 2025-01-09 17:26:15.227421640 +0100 ++++ poppler/poppler/GfxFont.cc 2025-01-09 17:27:06.930929833 +0100 +@@ -1868,7 +1868,11 @@ + ++i; + } + } ++#if 0//ndef __clang__ + std::ranges::sort(widths.exceps, cmpWidthExcepFunctor()); ++#else ++ std::sort(widths.exceps.begin(), widths.exceps.end(), cmpWidthExcepFunctor()); ++#endif + } + + // default metrics for vertical font +@@ -1916,7 +1920,11 @@ + ++i; + } + } ++#if 0//ndef __clang__ + std::ranges::sort(widths.excepsV, cmpWidthExcepVFunctor()); ++#else ++ std::sort(widths.excepsV.begin(), widths.excepsV.end(), cmpWidthExcepVFunctor()); ++#endif + } + + ok = true; +--- poppler/poppler/Gfx.cc.orig 2025-01-09 17:31:05.423273919 +0100 ++++ poppler/poppler/Gfx.cc 2025-01-09 17:31:07.340292763 +0100 +@@ -2545,7 +2545,11 @@ + bboxIntersections[1] = ((xMin - x0) * dx + (yMax - y0) * dy) * mul; + bboxIntersections[2] = ((xMax - x0) * dx + (yMin - y0) * dy) * mul; + bboxIntersections[3] = ((xMax - x0) * dx + (yMax - y0) * dy) * mul; ++#if 0//ndef __clang__ + std::ranges::sort(bboxIntersections); ++#else ++ std::sort(std::begin(bboxIntersections), std::end(bboxIntersections)); ++#endif + tMin = bboxIntersections[0]; + tMax = bboxIntersections[3]; + if (tMin < 0 && !shading->getExtend0()) { +@@ -2646,7 +2650,11 @@ + s[1] = (yMax - ty) / dx; + s[2] = (xMin - tx) / -dy; + s[3] = (xMax - tx) / -dy; ++#if 0//ndef __clang__ + std::ranges::sort(s); ++#else ++ std::sort(std::begin(s), std::end(s)); ++#endif + sMin = s[1]; + sMax = s[2]; + } +@@ -2787,7 +2795,11 @@ + s[1] = (yMax - ty) / dx; + s[2] = (xMin - tx) / -dy; + s[3] = (xMax - tx) / -dy; ++#if 0//ndef __clang__ + std::ranges::sort(s); ++#else ++ std::sort(std::begin(s), std::end(s)); ++#endif + sMin = s[1]; + sMax = s[2]; + } +--- poppler/poppler/TextOutputDev.cc.orig 2025-01-09 17:37:28.163110149 +0100 ++++ poppler/poppler/TextOutputDev.cc 2025-01-09 17:36:48.827864411 +0100 +@@ -4574,7 +4574,11 @@ + if (!words.empty()) { + // Reverse word order for RTL text. Fixes #53 for glib backend (Evince) + if (!page->primaryLR) { ++#if 0//ndef __clang__ + std::ranges::reverse(words); ++#else ++ std::reverse(words.begin(), words.end()); ++#endif + } + + lines.push_back(std::move(words)); +@@ -5456,7 +5460,11 @@ + for (word = rawWords; word; word = word->next) { + s.clear(); + uText.resize(word->len()); ++#if 0//ndef __clang__ + std::ranges::transform(word->chars, uText.begin(), [](auto &c) { return c.text; }); ++#else ++ std::transform(word->chars.begin(), word->chars.end(), uText.begin(), [](auto &c) { return c.text; }); ++#endif + dumpFragment(uText.data(), uText.size(), uMap, &s); + (*outputFunc)(outputStream, s.c_str(), s.getLength()); + +--- poppler/poppler/PDFDoc.cc.orig 2025-01-09 17:38:49.498598893 +0100 ++++ poppler/poppler/PDFDoc.cc 2025-01-09 17:38:22.459449316 +0100 +@@ -596,7 +596,11 @@ + if (fw->getType() == formSignature) { + assert(fw->getField()->getType() == formSignature); + FormFieldSignature *ffs = static_cast<FormFieldSignature *>(fw->getField()); ++#if 0//ndef __clang__ + if (std::ranges::find(res, ffs) == res.end()) { ++#else ++ if (std::find(res.begin(), res.end(), ffs) == res.end()) { ++#endif + res.push_back(ffs); + } + } +--- poppler/poppler/Annot.cc.orig 2025-01-09 17:40:31.125125064 +0100 ++++ poppler/poppler/Annot.cc 2025-01-09 17:40:14.021036519 +0100 +@@ -7499,7 +7499,11 @@ + + bool Annots::removeAnnot(Annot *annot) + { ++#if 0//ndef __clang__ + auto idx = std::ranges::find(annots, annot); ++#else ++ auto idx = std::find(annots.begin(), annots.end(), annot); ++#endif + + if (idx == annots.end()) { + return false; +--- poppler/poppler/Dict.cc.orig 2025-01-09 18:35:56.796874707 +0100 ++++ poppler/poppler/Dict.cc 2025-01-09 18:36:22.159050403 +0100 +@@ -32,7 +32,9 @@ + #include <config.h> + + #include <algorithm> ++#if 0//ndef __clang__ + #include <ranges> ++#endif + + #include "XRef.h" + #include "Dict.h" +--- poppler/poppler/CIDFontsWidthsBuilder.h.orig 2025-01-09 18:37:58.541718087 +0100 ++++ poppler/poppler/CIDFontsWidthsBuilder.h 2025-01-09 18:38:02.766747356 +0100 +@@ -15,7 +15,9 @@ + #include <vector> + #include <variant> + #include <algorithm> ++#if 0//ndef __clang__ + #include <ranges> ++#endif + #include <cassert> + + /** Class to help build the widths array as defined in +--- poppler/poppler/Catalog.cc.orig 2025-01-10 09:09:33.713016092 +0100 ++++ poppler/poppler/Catalog.cc 2025-01-10 09:10:36.719237223 +0100 +@@ -749,12 +749,14 @@ + } + } + ++#if 0//ndef __clang__ + struct EntryGooStringComparer + { + static constexpr const GooString *get(const GooString *string) { return string; }; + static constexpr const GooString *get(const auto &entry) { return &entry->name; } + auto operator()(const auto &lhs, const auto &rhs) { return get(lhs)->cmp(get(rhs)) < 0; } + }; ++#endif + + Object NameTree::lookup(const GooString *name) + { diff --git a/external/poppler/disable-freetype.patch.1 b/external/poppler/disable-freetype.patch.1 index 5d7426242c35..211214eebb3e 100644 --- a/external/poppler/disable-freetype.patch.1 +++ b/external/poppler/disable-freetype.patch.1 @@ -8,16 +8,17 @@ disable freetype dependent code #include <cctype> -#include "goo/ft_utils.h" +//#include "goo/ft_utils.h" - #include "goo/gmem.h" #include "goo/gfile.h" #include "goo/GooString.h" -@@ -78,8 +78,8 @@ + #include "Error.h" +@@ -78,9 +78,9 @@ #include "fofi/FoFiTrueType.h" #include "fofi/FoFiIdentifier.h" -#include <ft2build.h> --#include FT_FREETYPE_H +//#include <ft2build.h> + #include <variant> +-#include FT_FREETYPE_H +//#include FT_FREETYPE_H #include <unordered_set> diff --git a/external/poppler/disable-nss-and-gpgmepp.patch.1 b/external/poppler/disable-nss-and-gpgmepp.patch.1 deleted file mode 100644 index 1fc9ede6035c..000000000000 --- a/external/poppler/disable-nss-and-gpgmepp.patch.1 +++ /dev/null @@ -1,103 +0,0 @@ -disable NSS/GPGMEPP dependent code. - ---- poppler/poppler/Form.cc.orig 2023-06-05 19:29:14.000000000 +0900 -+++ poppler/poppler/Form.cc 2023-06-17 16:51:27.873431500 +0900 -@@ -64,7 +64,7 @@ - #include "Form.h" - #include "PDFDoc.h" - #include "DateInfo.h" --#include "CryptoSignBackend.h" -+/*#include "CryptoSignBackend.h"*/ - #include "SignatureInfo.h" - #include "CertificateInfo.h" - #include "XRef.h" -@@ -584,7 +584,7 @@ - { - return static_cast<FormFieldSignature *>(field)->validateSignatureResult(); - } -- -+#if 0 - // update hash with the specified range of data from the file - static bool hashFileRange(FILE *f, CryptoSign::SigningInterface *handler, Goffset start, Goffset end) - { -@@ -608,10 +608,12 @@ - delete[] buf; - return true; - } -+#endif - - bool FormWidgetSignature::signDocument(const std::string &saveFilename, const std::string &certNickname, const std::string &password, const GooString *reason, const GooString *location, const std::optional<GooString> &ownerPassword, - const std::optional<GooString> &userPassword) - { -+#if 0 - auto backend = CryptoSign::Factory::createActive(); - if (!backend) { - return false; -@@ -697,8 +699,8 @@ - signatureField->setSignature(*signature); - - fclose(file); -- -- return true; -+#endif -+ return false; - } - - static std::tuple<double, double> calculateDxDy(int rot, const PDFRectangle *rect) -@@ -2355,6 +2357,7 @@ - - void FormFieldSignature::hashSignedDataBlock(CryptoSign::VerificationInterface *handler, Goffset block_len) - { -+#if 0 - if (!handler) { - return; - } -@@ -2374,6 +2377,7 @@ - i += BLOCK_SIZE; - } - } -+#endif - } - - FormSignatureType FormWidgetSignature::signatureType() const -@@ -2395,6 +2399,7 @@ - - SignatureInfo *FormFieldSignature::validateSignatureAsync(bool doVerifyCert, bool forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool enableAIA, const std::function<void()> &doneCallback) - { -+#if 0 - auto backend = CryptoSign::Factory::createActive(); - if (!backend) { - if (doneCallback) { -@@ -2497,6 +2502,7 @@ - - signature_handler->validateCertificateAsync(std::chrono::system_clock::from_time_t(validationTime), ocspRevocationCheck, enableAIA, doneCallback); - -+#endif - return signature_info; - } - -@@ -2508,10 +2508,13 @@ - - CertificateValidationStatus FormFieldSignature::validateSignatureResult() - { -+#if 0 - if (!signature_handler) { - return CERTIFICATE_GENERIC_ERROR; - } - return signature_handler->validateCertificateResult(); -+#endif -+ return CERTIFICATE_GENERIC_ERROR; - } - - std::vector<Goffset> FormFieldSignature::getSignedRangeBounds() const - ---- poppler/poppler/Form.h 2024-05-13 10:18:04.303912457 +0200 -+++ poppler/poppler/Form.h 2024-05-13 11:41:51.547002511 +0200 -@@ -669,7 +669,6 @@ - double customAppearanceLeftFontSize = 20; - Ref imageResource = Ref::INVALID(); - std::unique_ptr<X509CertificateInfo> certificate_info; -- std::unique_ptr<CryptoSign::VerificationInterface> signature_handler; - - void print(int indent) override; - }; diff --git a/external/poppler/gcc7-EntityInfo.patch.1 b/external/poppler/gcc7-EntityInfo.patch.1 index 1dd7c83ad475..3bf3894937a6 100644 --- a/external/poppler/gcc7-EntityInfo.patch.1 +++ b/external/poppler/gcc7-EntityInfo.patch.1 @@ -40,8 +40,8 @@ workdir/UnpackedTarball/poppler/poppler/CertificateInfo.h:58:24: note: ‘X509Ce -GfxFontLoc &GfxFontLoc::operator=(GfxFontLoc &&other) noexcept = default; +GfxFontLoc &GfxFontLoc::operator=(GfxFontLoc &&other) /*noexcept*/ = default; - void GfxFontLoc::setPath(GooString *pathA) - { + //------------------------------------------------------------------------ + // GfxFont --- poppler/poppler/GfxFont.h.orig 2022-09-14 20:24:30.784608340 +0200 +++ poppler/poppler/GfxFont.h 2022-09-14 20:25:08.850586861 +0200 @@ -124,7 +124,7 @@ @@ -51,5 +51,5 @@ workdir/UnpackedTarball/poppler/poppler/CertificateInfo.h:58:24: note: ‘X509Ce - GfxFontLoc &operator=(GfxFontLoc &&other) noexcept; + GfxFontLoc &operator=(GfxFontLoc &&other) /*noexcept*/; - // Set the 'path' string from a GooString on the heap. - // Ownership of the object is taken. + GfxFontLocType locType; + GfxFontType fontType; diff --git a/external/poppler/gcc7-GfxFont.patch.1 b/external/poppler/gcc7-GfxFont.patch.1 index e73dbeb201c1..0d0d3e0ae3c1 100644 --- a/external/poppler/gcc7-GfxFont.patch.1 +++ b/external/poppler/gcc7-GfxFont.patch.1 @@ -58,7 +58,7 @@ index cc2ce038..b0d0d610 100644 //----- external font file (fontFile, fontDir) @@ -708,7 +708,7 @@ std::optional<GfxFontLoc> GfxFont::locateFont(XRef *xref, PSOutputDev *ps) fontLoc.fontType = fontCIDType2; - fontLoc.setPath(path); + fontLoc.path = *path; fontLoc.fontNum = fontNum; - return fontLoc; + return std::move(fontLoc); // std::move only required to please g++-7 @@ -72,8 +72,8 @@ index cc2ce038..b0d0d610 100644 - return fontLoc; + return std::move(fontLoc); // std::move only required to please g++-7 } - delete path; } + @@ -749,7 +749,7 @@ std::optional<GfxFontLoc> GfxFont::locateFont(XRef *xref, PSOutputDev *ps) fontLoc.fontType = fontType1; fontLoc.path = substName; @@ -86,7 +86,7 @@ index cc2ce038..b0d0d610 100644 @@ -811,7 +811,7 @@ std::optional<GfxFontLoc> GfxFont::getExternalFont(GooString *path, bool cid) fontLoc.locType = gfxFontLocExternal; fontLoc.fontType = fontType; - fontLoc.setPath(path); + fontLoc.path = path; - return fontLoc; + return std::move(fontLoc); // std::move only required to please g++-7 } diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 index e2163319fd43..a12fb0107098 100644 --- a/external/poppler/poppler-config.patch.1 +++ b/external/poppler/poppler-config.patch.1 @@ -29,7 +29,7 @@ index 0fbd336a..451213f8 100644 +/* #undef ENABLE_LIBOPENJPEG */ + +/* Build against libtiff. */ -+/* #define ENABLE_LIBTIFF 1 */ ++/* #undef ENABLE_LIBTIFF */ + +/* Build against libpng. */ +/* #define ENABLE_LIBPNG 1 */ @@ -41,16 +41,16 @@ index 0fbd336a..451213f8 100644 +/* #undef ENABLE_ZLIB_UNCOMPRESS */ + +/* Build against libnss3 for digital signature validation */ -+/* #define ENABLE_NSS3 1 */ ++/* #undef ENABLE_NSS3 */ + +/* Build against libgpgme for digital signature validation */ +/* #undef ENABLE_GPGME */ + +/* Signatures enabled */ -+/* #define ENABLE_SIGNATURES 1 */ ++/* #undef ENABLE_SIGNATURES */ + +/* Default signature backend */ -+/* #define DEFAULT_SIGNATURE_BACKEND "NSS" */ ++#define DEFAULT_SIGNATURE_BACKEND "None" + +/* Use cairo for rendering. */ +/* #define HAVE_CAIRO 1 */ @@ -179,7 +179,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_NAME "poppler" + +/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "poppler 24.06.0" ++#define PACKAGE_STRING "poppler 25.01.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "poppler" @@ -188,7 +188,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_URL "" + +/* Define to the version of this package. */ -+#define PACKAGE_VERSION "24.06.0" ++#define PACKAGE_VERSION "25.01.0" + +/* Poppler data dir */ +#define POPPLER_DATADIR "/usr/local/share/poppler" @@ -206,7 +206,7 @@ index 0fbd336a..451213f8 100644 +/* #undef USE_FLOAT */ + +/* Version number of package */ -+#define VERSION "24.06.0" ++#define VERSION "25.01.0" + +#if defined(__APPLE__) +#elif defined (_WIN32) @@ -290,7 +290,7 @@ index 0fbd336a..451213f8 100644 + +/* Defines the poppler version. */ +#ifndef POPPLER_VERSION -+#define POPPLER_VERSION "24.06.0" ++#define POPPLER_VERSION "25.01.0" +#endif + +/* Use single precision arithmetic in the Splash backend */ @@ -320,7 +320,7 @@ index 0fbd336a..451213f8 100644 + +/* Build against libtiff. */ +#ifndef ENABLE_LIBTIFF -+/* #define ENABLE_LIBTIFF 1 */ ++/* #undef ENABLE_LIBTIFF */ +#endif + +/* Build against libpng. */ @@ -377,7 +377,7 @@ index 0fbd336a..451213f8 100644 +//------------------------------------------------------------------------ + +// copyright notice -+#define popplerCopyright "Copyright 2005-2023 The Poppler Developers - http://poppler.freedesktop.org" ++#define popplerCopyright "Copyright 2005-2025 The Poppler Developers - http://poppler.freedesktop.org" +#define xpdfCopyright "Copyright 1996-2011, 2022 Glyph & Cog, LLC" + +//------------------------------------------------------------------------ @@ -437,9 +437,9 @@ index 0fbd336a..451213f8 100644 + +#include "poppler-global.h" + -+#define POPPLER_VERSION "24.06.0" -+#define POPPLER_VERSION_MAJOR 24 -+#define POPPLER_VERSION_MINOR 6 ++#define POPPLER_VERSION "25.01.0" ++#define POPPLER_VERSION_MAJOR 25 ++#define POPPLER_VERSION_MINOR 1 +#define POPPLER_VERSION_MICRO 0 + +namespace poppler diff --git a/external/poppler/std_numbers.patch.1 b/external/poppler/std_numbers.patch.1 new file mode 100644 index 000000000000..38a23b7a6dc0 --- /dev/null +++ b/external/poppler/std_numbers.patch.1 @@ -0,0 +1,30 @@ +remove C++20 std::numbers + +--- poppler/poppler/Annot.cc.orig 2025-01-09 17:42:27.108725610 +0100 ++++ poppler/poppler/Annot.cc 2025-01-09 17:44:32.213373330 +0100 +@@ -70,7 +70,6 @@ + #include <cstdlib> + #include <cmath> + #include <cassert> +-#include <numbers> + #include "goo/gmem.h" + #include "goo/gstrtod.h" + #include "Error.h" +@@ -1762,7 +1762,7 @@ + { + double r2; + +- r2 = r / std::numbers::sqrt2; ++ r2 = r / sqrt(2.0); + appearBuf->appendf("{0:.2f} {1:.2f} m ", cx + r2, cy + r2); + appearBuf->appendf("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c ", cx + (1 - bezierCircle) * r2, cy + (1 + bezierCircle) * r2, cx - (1 - bezierCircle) * r2, cy + (1 + bezierCircle) * r2, cx - r2, cy + r2); + appearBuf->appendf("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c ", cx - (1 + bezierCircle) * r2, cy + (1 - bezierCircle) * r2, cx - (1 + bezierCircle) * r2, cy - (1 - bezierCircle) * r2, cx - r2, cy - r2); +@@ -1775,7 +1775,7 @@ + { + double r2; + +- r2 = r / std::numbers::sqrt2; ++ r2 = r / sqrt(2.0); + appearBuf->appendf("{0:.2f} {1:.2f} m ", cx - r2, cy - r2); + appearBuf->appendf("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c ", cx - (1 - bezierCircle) * r2, cy - (1 + bezierCircle) * r2, cx + (1 - bezierCircle) * r2, cy - (1 + bezierCircle) * r2, cx + r2, cy - r2); + appearBuf->appendf("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c ", cx + (1 + bezierCircle) * r2, cy - (1 - bezierCircle) * r2, cx + (1 + bezierCircle) * r2, cy + (1 - bezierCircle) * r2, cx + r2, cy + r2); diff --git a/external/poppler/std_span.patch.1 b/external/poppler/std_span.patch.1 index 37516afd5f03..c61f1269a876 100644 --- a/external/poppler/std_span.patch.1 +++ b/external/poppler/std_span.patch.1 @@ -36,3 +36,15 @@ replace C++20 std::span with o3tl::span #include "FoFiBase.h" #include "poppler_private_export.h" +--- poppler/poppler/UnicodeMap.h.orig 2025-01-09 15:49:23.405887878 +0100 ++++ poppler/poppler/UnicodeMap.h 2025-01-09 15:49:15.094853934 +0100 +@@ -38,7 +38,8 @@ + #include <string> + #include <vector> + #include <variant> +-#include <span> ++#include <o3tl/span.hxx> ++namespace std { using o3tl::span; } + + //------------------------------------------------------------------------ + diff --git a/external/poppler/std_string.patch.1 b/external/poppler/std_string.patch.1 index 02a7940b8e40..3c3ef6dcf564 100644 --- a/external/poppler/std_string.patch.1 +++ b/external/poppler/std_string.patch.1 @@ -53,17 +53,6 @@ remove C++20 starts_with // for now we only support ttf, ttc, otf fonts return false; } ---- poppler/poppler/GfxFont.cc.orig 2025-01-09 11:26:07.863484064 +0100 -+++ poppler/poppler/GfxFont.cc 2025-01-09 11:31:47.164550059 +0100 -@@ -1252,7 +1252,7 @@ - - // pass 1: use the name-to-Unicode mapping table - missing = hex = false; -- bool isZapfDingbats = name && name->ends_with("ZapfDingbats"); -+ bool isZapfDingbats = name && GooString::endsWith(*name, "ZapfDingbats"); - for (int code = 0; code < 256; ++code) { - if ((charName = enc[code])) { - if (isZapfDingbats) { --- poppler/poppler/Form.cc.orig2 2025-01-09 11:33:42.284911742 +0100 +++ poppler/poppler/Form.cc 2025-01-09 11:34:46.013111945 +0100 @@ -2818,7 +2818,7 @@ @@ -86,3 +75,36 @@ remove C++20 starts_with i = 3; step = 2; } else { +--- poppler/poppler/GfxFont.cc.orig2 2025-01-09 15:28:44.912394819 +0100 ++++ poppler/poppler/GfxFont.cc 2025-01-09 15:29:01.903477753 +0100 +@@ -1085,7 +1085,7 @@ + baseEnc = nullptr; + baseEncFromFontFile = false; + obj1 = fontDict->lookup("Encoding"); +- bool isZapfDingbats = name && name->ends_with("ZapfDingbats"); ++ bool isZapfDingbats = name && GooString::endsWith(*name, "ZapfDingbats"); + if (isZapfDingbats) { + baseEnc = zapfDingbatsEncoding; + hasEncoding = true; +--- poppler/poppler/UTF.h.orig2 2025-01-09 15:46:59.275299177 +0100 ++++ poppler/poppler/UTF.h 2025-01-09 15:47:32.502434901 +0100 +@@ -74,7 +74,7 @@ + // check whether string starts with Big-Endian byte order mark and string length is even + inline bool hasUnicodeByteOrderMarkAndLengthIsEven(const std::string &s) + { +- return s.starts_with(unicodeByteOrderMark) && s.length() % 2 == 0; ++ return hasUnicodeByteOrderMark(s) && s.length() % 2 == 0; + } + + // is a unicode whitespace character +--- poppler/poppler/GlobalParamsWin.cc.orig 2025-01-10 09:54:56.256775789 +0100 ++++ poppler/poppler/GlobalParamsWin.cc 2025-01-10 09:55:02.001792823 +0100 +@@ -488,7 +488,7 @@ + path = fontFile->second; + if (substituteFontName) + substituteFontName->Set(path.c_str()); +- if (path.ends_with(".ttc")) { ++ if (GooString::endsWith(path, ".ttc")) { + *type = sysFontTTC; + } else { + *type = sysFontTTF; commit c02c3effa5689ff47fed0db58807cdf77cff4138 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Jan 7 18:42:29 2025 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 sdext: adapt xpdfwrapper to poppler 24.12 Change-Id: Ia47edf2ac821e3ef5c40f7582253f894eac74060 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179902 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit aa94faf493945e854a888e809a9c5cc8d6d0b978) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179957 Tested-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 052c9859e2bd5dfeb54d834a3d7910140d5a8535) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180039 Tested-by: allotropia jenkins <jenk...@allotropia.de> (cherry picked from commit 3c1ac1bd77689863797732b3736fd53f0e553cdb) diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx index 922bf064f571..ca97a9330e2f 100644 --- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx @@ -1020,7 +1020,12 @@ void PDFOutDev::drawImageMask(GfxState* pState, Object*, Stream* str, int bitsPerComponent = 1; StreamColorSpaceMode csMode = streamCSNone; +#if POPPLER_CHECK_VERSION(24, 12, 0) + bool hasAlpha; + str->getImageParams( &bitsPerComponent, &csMode, &hasAlpha ); +#else str->getImageParams( &bitsPerComponent, &csMode ); +#endif if( bitsPerComponent == 1 && (csMode == streamCSNone || csMode == streamCSDeviceGray) ) { GfxRGB oneColor = { dblToCol( 1.0 ), dblToCol( 1.0 ), dblToCol( 1.0 ) }; commit ff40d530dbb174f4e025852609a3c841b438a463 Author: Taichi Haradaguchi <20001...@ymail.ne.jp> AuthorDate: Fri Aug 9 05:50:39 2024 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: upgrade to release 24.08.0 Fixes CVE-2024-6239 Downloaded from https://poppler.freedesktop.org/poppler-24.08.0.tar.xz Change-Id: I70373c367cc3da87d9847c00b02a17f514b52ae8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171667 Tested-by: Jenkins Reviewed-by: Taichi Haradaguchi <20001...@ymail.ne.jp> (cherry picked from commit e266da95e0522fd9896f92f1c2ca3235e0e6fd66) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172951 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173040 (cherry picked from commit e79a53b37d7157b7991eb27b3f440028ca06feea) (cherry picked from commit 8b4687eb81e8413469f4a968be2d4b2a279d5195) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180030 Tested-by: allotropia jenkins <jenk...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 58d93d6e4334b750723767b751705e00b9dd510c) diff --git a/download.lst b/download.lst index bce8f82dded3..128e7a6935b6 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := 0cdabd495cada11f6ee9e75c793f80daf46367b66c25a63ee8c26d0f9ec40c76 -POPPLER_TARBALL := poppler-24.06.0.tar.xz +POPPLER_SHA256SUM := 97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174 +POPPLER_TARBALL := poppler-24.08.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/gcc7-GfxFont.patch.1 b/external/poppler/gcc7-GfxFont.patch.1 index a240b1b8bad2..e73dbeb201c1 100644 --- a/external/poppler/gcc7-GfxFont.patch.1 +++ b/external/poppler/gcc7-GfxFont.patch.1 @@ -41,7 +41,7 @@ index cc2ce038..b0d0d610 100644 @@ -668,7 +668,7 @@ std::optional<GfxFontLoc> GfxFont::locateFont(XRef *xref, PSOutputDev *ps) fontLoc.locType = gfxFontLocResident; fontLoc.fontType = fontType1; - fontLoc.path = *name; + fontLoc.path = name.value_or(std::string()); - return fontLoc; + return std::move(fontLoc); // std::move only required to please g++-7 } diff --git a/external/poppler/std_span.patch.1 b/external/poppler/std_span.patch.1 index 1ed550daa3a4..37516afd5f03 100644 --- a/external/poppler/std_span.patch.1 +++ b/external/poppler/std_span.patch.1 @@ -24,3 +24,15 @@ replace C++20 std::span with o3tl::span #include "CharTypes.h" #include "poppler_private_export.h" +--- poppler/fofi/FoFiTrueType.h.orig 2025-01-09 14:58:33.689388042 +0100 ++++ poppler/fofi/FoFiTrueType.h 2025-01-09 14:58:35.674394746 +0100 +@@ -35,7 +35,8 @@ + #include <vector> + #include <unordered_map> + #include <string> +-#include <span> ++#include <o3tl/span.hxx> ++namespace std { using o3tl::span; } + #include "FoFiBase.h" + #include "poppler_private_export.h" + diff --git a/include/o3tl/span.hxx b/include/o3tl/span.hxx index 55bc5c7e2a9d..7be5bda39ca3 100644 --- a/include/o3tl/span.hxx +++ b/include/o3tl/span.hxx @@ -24,6 +24,7 @@ namespace o3tl { using std::span; } #include <cassert> #include <cstddef> +#include <array> #include <iterator> #include <type_traits> #include <vector> @@ -60,6 +61,10 @@ public: assert(a != nullptr || len == 0); } + template<typename T2, std::size_t Size> + constexpr span(const std::array<T2, Size>& arr) + : data_(const_cast<T*>(arr.data())), size_(arr.size()) {} + template<typename T2> constexpr span(const std::vector<T2>& vec) : data_(const_cast<T*>(vec.data())), size_(vec.size()) {} commit eb7b35158648a1f096bce461f23a6773389ffc12 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Jun 10 16:49:29 2024 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: Upgrade to 24.06.0 Downloaded from https://poppler.freedesktop.org/poppler-24.06.0.tar.xz Change-Id: I6b679ae014edd7a9897eed39a6e91c63251cc016 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168642 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173039 Reviewed-by: Taichi Haradaguchi <20001...@ymail.ne.jp> (cherry picked from commit cec9dd0f6f961f39072795c27ec90994587c5369) (cherry picked from commit 2728df128681088e579f38792248eb932b74f8b8) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180011 Tested-by: Michael Stahl <michael.st...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 2452c7182a839e793b6a6d99b2a0ae4b73429dde) diff --git a/download.lst b/download.lst index cadbe638f67c..bce8f82dded3 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := d8c5eb30b50285ad9f0af8c6335cc2d3b9597fca475cbc2598a5479fa379f779 -POPPLER_TARBALL := poppler-24.05.0.tar.xz +POPPLER_SHA256SUM := 0cdabd495cada11f6ee9e75c793f80daf46367b66c25a63ee8c26d0f9ec40c76 +POPPLER_TARBALL := poppler-24.06.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index a3f493bb204f..382e2e0f1d5f 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/gcc7-GfxFont.patch.1 \ external/poppler/std_charconv.patch.1 \ external/poppler/std_string.patch.1 \ + external/poppler/std_span.patch.1 \ external/poppler/poppler-config.patch.1 \ )) diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 index 8f71e987b2b9..e2163319fd43 100644 --- a/external/poppler/poppler-config.patch.1 +++ b/external/poppler/poppler-config.patch.1 @@ -179,7 +179,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_NAME "poppler" + +/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "poppler 23.09.0" ++#define PACKAGE_STRING "poppler 24.06.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "poppler" @@ -188,7 +188,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_URL "" + +/* Define to the version of this package. */ -+#define PACKAGE_VERSION "23.09.0" ++#define PACKAGE_VERSION "24.06.0" + +/* Poppler data dir */ +#define POPPLER_DATADIR "/usr/local/share/poppler" @@ -206,7 +206,7 @@ index 0fbd336a..451213f8 100644 +/* #undef USE_FLOAT */ + +/* Version number of package */ -+#define VERSION "23.09.0" ++#define VERSION "24.06.0" + +#if defined(__APPLE__) +#elif defined (_WIN32) @@ -290,7 +290,7 @@ index 0fbd336a..451213f8 100644 + +/* Defines the poppler version. */ +#ifndef POPPLER_VERSION -+#define POPPLER_VERSION "23.09.0" ++#define POPPLER_VERSION "24.06.0" +#endif + +/* Use single precision arithmetic in the Splash backend */ @@ -437,9 +437,9 @@ index 0fbd336a..451213f8 100644 + +#include "poppler-global.h" + -+#define POPPLER_VERSION "23.09.0" -+#define POPPLER_VERSION_MAJOR 23 -+#define POPPLER_VERSION_MINOR 9 ++#define POPPLER_VERSION "24.06.0" ++#define POPPLER_VERSION_MAJOR 24 ++#define POPPLER_VERSION_MINOR 6 +#define POPPLER_VERSION_MICRO 0 + +namespace poppler diff --git a/external/poppler/std_span.patch.1 b/external/poppler/std_span.patch.1 new file mode 100644 index 000000000000..1ed550daa3a4 --- /dev/null +++ b/external/poppler/std_span.patch.1 @@ -0,0 +1,26 @@ +replace C++20 std::span with o3tl::span + +--- poppler/poppler/Stream.h.orig 2025-01-09 11:50:21.095027459 +0100 ++++ poppler/poppler/Stream.h 2025-01-09 11:53:05.933540760 +0100 +@@ -47,7 +47,8 @@ + #include <atomic> + #include <cstdio> + #include <vector> +-#include <span> ++#include <o3tl/span.hxx> ++namespace std { using o3tl::span; } + + #include "poppler-config.h" + #include "poppler_private_export.h" +--- poppler/poppler/UTF.h.orig2 2025-01-09 11:48:18.197644776 +0100 ++++ poppler/poppler/UTF.h 2025-01-09 11:53:11.688558686 +0100 +@@ -23,7 +23,8 @@ + #include <climits> + #include <string> + #include <vector> +-#include <span> ++#include <o3tl/span.hxx> ++namespace std { using o3tl::span; } + + #include "CharTypes.h" + #include "poppler_private_export.h" diff --git a/external/poppler/std_string.patch.1 b/external/poppler/std_string.patch.1 index 6c5ce136ca47..02a7940b8e40 100644 --- a/external/poppler/std_string.patch.1 +++ b/external/poppler/std_string.patch.1 @@ -75,3 +75,14 @@ remove C++20 starts_with const Object fontObj = fontDict->getVal(i); if (fontObj.isDict() && fontObj.dictIs("Font")) { const Object fontBaseFontObj = fontObj.dictLookup("BaseFont"); +--- poppler/poppler/PSOutputDev.cc.orig 2025-01-09 12:21:50.100540341 +0100 ++++ poppler/poppler/PSOutputDev.cc 2025-01-09 12:21:52.004545519 +0100 +@@ -7482,7 +7482,7 @@ + // for the keyword, which was emitted by the caller) + // - lines that start with a left paren are treated as <text> + // instead of <textline>, so we escape a leading paren +- if (s.starts_with(unicodeByteOrderMark)) { ++ if (GooString::startsWith(s, unicodeByteOrderMark)) { + i = 3; + step = 2; + } else { diff --git a/include/o3tl/span.hxx b/include/o3tl/span.hxx index 18d60ca7d6c0..55bc5c7e2a9d 100644 --- a/include/o3tl/span.hxx +++ b/include/o3tl/span.hxx @@ -35,6 +35,7 @@ namespace o3tl { template<typename T> class span { public: + using element_type = T; using value_type = T; using pointer = value_type *; using const_pointer = value_type const *; @@ -61,7 +62,7 @@ public: template<typename T2> constexpr span(const std::vector<T2>& vec) - : data_(vec.data()), size_(vec.size()) {} + : data_(const_cast<T*>(vec.data())), size_(vec.size()) {} /** for assigning from span<T> to span<const T> */ constexpr span (const span<typename std::remove_const<T>::type>& other) noexcept commit de28217e1330fef5ff53efe981eb1cd81cf157ea Author: Luboš Luňák <l.lu...@collabora.com> AuthorDate: Sun Oct 31 11:23:11 2021 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 add o3tl::span ctor from std::vector Makes code simpler, and std::span can be constructed from std::vector too. [note: backport only contains o3tl::span changes] Change-Id: Iae26b53c52148c19d9068a63126a7393d098d654 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124507 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Reviewed-by: Luboš Luňák <l.lu...@collabora.com> Tested-by: Jenkins (cherry picked from commit b5e701d36ec16776e01597fd250dbde2e73fad3a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180010 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Tested-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit a1959833b95c00afc8c16b2a4cffaf79c4890f0e) diff --git a/include/o3tl/span.hxx b/include/o3tl/span.hxx index cc4184634ce7..18d60ca7d6c0 100644 --- a/include/o3tl/span.hxx +++ b/include/o3tl/span.hxx @@ -26,6 +26,7 @@ namespace o3tl { using std::span; } #include <cstddef> #include <iterator> #include <type_traits> +#include <vector> namespace o3tl { @@ -58,6 +59,10 @@ public: assert(a != nullptr || len == 0); } + template<typename T2> + constexpr span(const std::vector<T2>& vec) + : data_(vec.data()), size_(vec.size()) {} + /** for assigning from span<T> to span<const T> */ constexpr span (const span<typename std::remove_const<T>::type>& other) noexcept : data_(other.data()), size_(other.size()) {} commit ba385820c3cfea169a2eb8cde36271da7c6ed48a Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Oct 28 09:27:29 2021 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 pass DX array around using o3tl::span instead of pointer so we get bounds checking in debug mode Note that I cannot just pass around the std::vectors involved because there is a place in editeng which calls with a subset of a vector. [note: backport only contains the o3tl::span changes] Change-Id: I5088a139593c27bf9cbe5d843ab4b0048ac6d508 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124330 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> (cherry picked from commit 894b4911ffb96ff667fdeb3aec7922316ab7230a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180009 Tested-by: allotropia jenkins <jenk...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit f144f028f108e2f7a025f2befb3519ed43a04bc6) diff --git a/include/o3tl/span.hxx b/include/o3tl/span.hxx index b19d2d847ac7..cc4184634ce7 100644 --- a/include/o3tl/span.hxx +++ b/include/o3tl/span.hxx @@ -25,6 +25,7 @@ namespace o3tl { using std::span; } #include <cassert> #include <cstddef> #include <iterator> +#include <type_traits> namespace o3tl { @@ -57,6 +58,10 @@ public: assert(a != nullptr || len == 0); } + /** for assigning from span<T> to span<const T> */ + constexpr span (const span<typename std::remove_const<T>::type>& other) noexcept + : data_(other.data()), size_(other.size()) {} + constexpr bool empty() const noexcept { return size_ == 0; } constexpr iterator begin() const noexcept { return data_; } commit 05f38833c44f6227dc3c9c49a6eccae3aff551d7 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon May 13 11:14:06 2024 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: Upgrade 24.05.0 * external/poppler/char_traits.patch is no longer neeeded after https://cgit.freedesktop.org/poppler/poppler/commit/cpp/poppler-global.h?id=b4ac7d9af7cb5edfcfcbda035ed8b8c218ba8564 * Adapt external/poppler/disable-nss-and-gpgmepp.patch.1 after https://cgit.freedesktop.org/poppler/poppler/commit/?id=d40bb7e308c9e3299e50d3e2880229cd6272587e Downloaded from https://poppler.freedesktop.org/poppler-24.05.0.tar.xz Change-Id: I87ed833f92e504f0a39b5f64c1db42d579050a37 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167582 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173038 Reviewed-by: Taichi Haradaguchi <20001...@ymail.ne.jp> (cherry picked from commit e70a307eab620e8a6572676398781c35f4925727) (cherry picked from commit 93c1e8f80b84445a6918b3f8a56016bbb8675757) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180008 Tested-by: allotropia jenkins <jenk...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit d72c4a5aedfe632b695aa419cf8e8ecb77d2b478) diff --git a/download.lst b/download.lst index 6764ec0cff44..cadbe638f67c 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := bafbf0db5713dec25b5d16eb2cd87e4a62351cdc40f050c3937cd8dd6882d446 -POPPLER_TARBALL := poppler-24.03.0.tar.xz +POPPLER_SHA256SUM := d8c5eb30b50285ad9f0af8c6335cc2d3b9597fca475cbc2598a5479fa379f779 +POPPLER_TARBALL := poppler-24.05.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index a8f9af27fe60..a3f493bb204f 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/gcc7-EntityInfo.patch.1 \ external/poppler/gcc7-GfxFont.patch.1 \ external/poppler/std_charconv.patch.1 \ + external/poppler/std_string.patch.1 \ external/poppler/poppler-config.patch.1 \ )) diff --git a/external/poppler/disable-freetype.patch.1 b/external/poppler/disable-freetype.patch.1 index 3c4d1d0f7a8a..5d7426242c35 100644 --- a/external/poppler/disable-freetype.patch.1 +++ b/external/poppler/disable-freetype.patch.1 @@ -22,13 +22,13 @@ disable freetype dependent code #include <unordered_set> // helper for using std::visit to get a dependent false for static_asserts -@@ -2760,6 +2760,8 @@ +@@ -2840,6 +2840,8 @@ Form::AddFontResult Form::addFontToDefaultResources(const std::string &filepath, int faceIndex, const std::string &fontFamily, const std::string &fontStyle, bool forceName) { + return {}; +#if 0 - if (!GooString::endsWith(filepath, ".ttf") && !GooString::endsWith(filepath, ".ttc") && !GooString::endsWith(filepath, ".otf")) { + if (!filepath.ends_with(".ttf") && !filepath.ends_with(".ttc") && !filepath.ends_with(".otf")) { error(errIO, -1, "We only support embedding ttf/ttc/otf fonts for now. The font file for {0:s} {1:s} was {2:s}", fontFamily.c_str(), fontStyle.c_str(), filepath.c_str()); return {}; @@ -2994,6 +2996,7 @@ diff --git a/external/poppler/disable-nss-and-gpgmepp.patch.1 b/external/poppler/disable-nss-and-gpgmepp.patch.1 index 1d7f7f933433..1fc9ede6035c 100644 --- a/external/poppler/disable-nss-and-gpgmepp.patch.1 +++ b/external/poppler/disable-nss-and-gpgmepp.patch.1 @@ -11,9 +11,9 @@ disable NSS/GPGMEPP dependent code. #include "SignatureInfo.h" #include "CertificateInfo.h" #include "XRef.h" -@@ -578,7 +578,7 @@ +@@ -584,7 +584,7 @@ { - return static_cast<FormFieldSignature *>(field)->validateSignature(doVerifyCert, forceRevalidation, validationTime, ocspRevocationCheck, enableAIA); + return static_cast<FormFieldSignature *>(field)->validateSignatureResult(); } - +#if 0 @@ -60,19 +60,44 @@ disable NSS/GPGMEPP dependent code. } FormSignatureType FormWidgetSignature::signatureType() const -@@ -2388,6 +2392,7 @@ - - SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool enableAIA) +@@ -2395,6 +2399,7 @@ + + SignatureInfo *FormFieldSignature::validateSignatureAsync(bool doVerifyCert, bool forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool enableAIA, const std::function<void()> &doneCallback) { +#if 0 auto backend = CryptoSign::Factory::createActive(); if (!backend) { - return signature_info; -@@ -2464,6 +2469,7 @@ - const CertificateValidationStatus cert_val_state = signature_handler->validateCertificate(std::chrono::system_clock::from_time_t(validationTime), ocspRevocationCheck, enableAIA); - signature_info->setCertificateValStatus(cert_val_state); - + if (doneCallback) { +@@ -2497,6 +2502,7 @@ + + signature_handler->validateCertificateAsync(std::chrono::system_clock::from_time_t(validationTime), ocspRevocationCheck, enableAIA, doneCallback); + +#endif return signature_info; } +@@ -2508,10 +2508,13 @@ + + CertificateValidationStatus FormFieldSignature::validateSignatureResult() + { ++#if 0 + if (!signature_handler) { + return CERTIFICATE_GENERIC_ERROR; + } + return signature_handler->validateCertificateResult(); ++#endif ++ return CERTIFICATE_GENERIC_ERROR; + } + + std::vector<Goffset> FormFieldSignature::getSignedRangeBounds() const + +--- poppler/poppler/Form.h 2024-05-13 10:18:04.303912457 +0200 ++++ poppler/poppler/Form.h 2024-05-13 11:41:51.547002511 +0200 +@@ -669,7 +669,6 @@ + double customAppearanceLeftFontSize = 20; + Ref imageResource = Ref::INVALID(); + std::unique_ptr<X509CertificateInfo> certificate_info; +- std::unique_ptr<CryptoSign::VerificationInterface> signature_handler; + + void print(int indent) override; + }; diff --git a/external/poppler/std_string.patch.1 b/external/poppler/std_string.patch.1 new file mode 100644 index 000000000000..6c5ce136ca47 --- /dev/null +++ b/external/poppler/std_string.patch.1 @@ -0,0 +1,77 @@ +remove C++20 starts_with + +--- poppler/goo/GooString.h.orig 2025-01-09 11:15:13.174300578 +0100 ++++ poppler/goo/GooString.h 2025-01-09 11:17:39.568825610 +0100 +@@ -237,11 +237,16 @@ + int cmp(const char *sA) const { return compare(sA); } + int cmpN(const char *sA, int n) const { return compare(0, n, sA); } + +- // Return true if strings starts with prefix +- using std::string::starts_with; +- +- // Return true if string ends with suffix +- using std::string::ends_with; ++ bool starts_with(const char *prefix) const ++ { ++ return startsWith(toStr(), prefix); ++ } ++ bool ends_with(const char *suffix) const ++ { ++ return endsWith(toStr(), suffix); ++ } ++ static bool startsWith(std::string_view str, std::string_view prefix) { return str.size() >= prefix.size() && 0 == str.compare(0, prefix.size(), prefix); } ++ static bool endsWith(std::string_view str, std::string_view suffix) { return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); } + }; + + #endif +--- poppler/poppler/UTF.h.orig 2025-01-09 11:25:36.593385806 +0100 ++++ poppler/poppler/UTF.h 2025-01-09 11:25:30.852367770 +0100 +@@ -54,13 +54,13 @@ + // check whether string starts with Big-Endian byte order mark + inline bool hasUnicodeByteOrderMark(const std::string &s) + { +- return s.starts_with(unicodeByteOrderMark); ++ return s.size() >= unicodeByteOrderMark.size() && 0 == s.compare(0, unicodeByteOrderMark.size(), unicodeByteOrderMark); + } + + // check whether string starts with Little-Endian byte order mark + inline bool hasUnicodeByteOrderMarkLE(const std::string &s) + { +- return s.starts_with(unicodeByteOrderMarkLE); ++ return s.size() >= unicodeByteOrderMarkLE.size() && 0 == s.compare(0, unicodeByteOrderMarkLE.size(), unicodeByteOrderMarkLE); + } + + // put big-endian unicode byte order mark at the beginning of a string +--- poppler/poppler/GlobalParams.cc.orig 2025-01-09 11:26:46.850606552 +0100 ++++ poppler/poppler/GlobalParams.cc 2025-01-09 11:29:28.030112935 +0100 +@@ -903,7 +903,7 @@ + + static bool supportedFontForEmbedding(Unicode uChar, const char *filepath, int faceIndex) + { +- if (!std::string_view(filepath).ends_with(".ttf") && !std::string_view(filepath).ends_with(".ttc") && !std::string_view(filepath).ends_with(".otf")) { ++ if (!GooString::endsWith(std::string_view(filepath), ".ttf") && !GooString::endsWith(std::string_view(filepath), ".ttc") && !GooString::endsWith(std::string_view(filepath), ".otf")) { + // for now we only support ttf, ttc, otf fonts + return false; + } +--- poppler/poppler/GfxFont.cc.orig 2025-01-09 11:26:07.863484064 +0100 ++++ poppler/poppler/GfxFont.cc 2025-01-09 11:31:47.164550059 +0100 +@@ -1252,7 +1252,7 @@ + + // pass 1: use the name-to-Unicode mapping table + missing = hex = false; +- bool isZapfDingbats = name && name->ends_with("ZapfDingbats"); ++ bool isZapfDingbats = name && GooString::endsWith(*name, "ZapfDingbats"); + for (int code = 0; code < 256; ++code) { + if ((charName = enc[code])) { + if (isZapfDingbats) { +--- poppler/poppler/Form.cc.orig2 2025-01-09 11:33:42.284911742 +0100 ++++ poppler/poppler/Form.cc 2025-01-09 11:34:46.013111945 +0100 +@@ -2818,7 +2818,7 @@ + const Dict *fontDict = fontDictObj.getDict(); + for (int i = 0; i < fontDict->getLength(); ++i) { + const char *key = fontDict->getKey(i); +- if (std::string_view(key).starts_with(kOurDictFontNamePrefix)) { ++ if (GooString::startsWith(std::string_view(key), kOurDictFontNamePrefix)) { + const Object fontObj = fontDict->getVal(i); + if (fontObj.isDict() && fontObj.dictIs("Font")) { + const Object fontBaseFontObj = fontObj.dictLookup("BaseFont"); commit 386c3d06ef5d4bd4764966decafb142778166d6d Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Mar 25 20:59:08 2024 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: upgrade to release 24.03.0 Change-Id: Icd063dcc9a034e88283ddf16be64091a32f3453f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165292 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173037 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit 00b2beb5427f53d90efcadefe50c1320c0501535) (cherry picked from commit 3d282731feae4056f3158a3650a1e1406a4dba22) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180007 Tested-by: Michael Stahl <michael.st...@allotropia.de> Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 878aefc916e04cb96cbba2bc4304573d818b0d9c) diff --git a/download.lst b/download.lst index 76d7f0f2f699..6764ec0cff44 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := 80d1d44dd8bdf4ac1a47d56c5065075eb9991790974b1ed7d14b972acde88e55 -POPPLER_TARBALL := poppler-23.09.0.tar.xz +POPPLER_SHA256SUM := bafbf0db5713dec25b5d16eb2cd87e4a62351cdc40f050c3937cd8dd6882d446 +POPPLER_TARBALL := poppler-24.03.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/boost/include/boost/convert.hpp b/external/boost/include/boost/convert.hpp new file mode 100644 index 000000000000..537ae130b53d --- /dev/null +++ b/external/boost/include/boost/convert.hpp @@ -0,0 +1,28 @@ +/* generated by bin/gen-boost-headers, do not edit! */ +#pragma once +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" /* first! for GCC */ +#pragma GCC diagnostic ignored "-Wunknown-warning-option" // second! for Clang 5 +#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated-copy" +#pragma GCC diagnostic ignored "-Wextra" +#pragma GCC diagnostic ignored "-Wignored-qualifiers" +#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#pragma GCC diagnostic ignored "-Winvalid-constexpr" +#pragma GCC diagnostic ignored "-Wmicrosoft-unqualified-friend" +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#pragma GCC diagnostic ignored "-Wparentheses" +#pragma GCC diagnostic ignored "-Wplacement-new" +#pragma GCC diagnostic ignored "-Wreturn-type" +#pragma GCC diagnostic ignored "-Wshadow" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" +#pragma GCC diagnostic ignored "-Wtype-limits" +#pragma GCC diagnostic ignored "-Wundef" +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" +#pragma GCC diagnostic ignored "-Wunused-macros" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-variable" +#include_next <boost/convert.hpp> +#pragma GCC diagnostic pop diff --git a/external/boost/include/boost/convert/stream.hpp b/external/boost/include/boost/convert/stream.hpp new file mode 100644 index 000000000000..cf5a709fc45b --- /dev/null +++ b/external/boost/include/boost/convert/stream.hpp @@ -0,0 +1,28 @@ +/* generated by bin/gen-boost-headers, do not edit! */ +#pragma once +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" /* first! for GCC */ +#pragma GCC diagnostic ignored "-Wunknown-warning-option" // second! for Clang 5 +#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated-copy" +#pragma GCC diagnostic ignored "-Wextra" +#pragma GCC diagnostic ignored "-Wignored-qualifiers" +#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#pragma GCC diagnostic ignored "-Winvalid-constexpr" +#pragma GCC diagnostic ignored "-Wmicrosoft-unqualified-friend" +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#pragma GCC diagnostic ignored "-Wparentheses" +#pragma GCC diagnostic ignored "-Wplacement-new" +#pragma GCC diagnostic ignored "-Wreturn-type" +#pragma GCC diagnostic ignored "-Wshadow" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" +#pragma GCC diagnostic ignored "-Wtype-limits" +#pragma GCC diagnostic ignored "-Wundef" +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" +#pragma GCC diagnostic ignored "-Wunused-macros" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-variable" +#include_next <boost/convert/stream.hpp> +#pragma GCC diagnostic pop diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index 62877a0f0059..20cb4001d196 100644 --- a/external/poppler/StaticLibrary_poppler.mk +++ b/external/poppler/StaticLibrary_poppler.mk @@ -12,6 +12,7 @@ $(eval $(call gb_StaticLibrary_StaticLibrary,poppler)) $(eval $(call gb_StaticLibrary_use_unpacked,poppler,poppler)) $(eval $(call gb_StaticLibrary_use_externals,poppler,\ + boost_headers \ libjpeg \ zlib \ )) diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index cc4f67754a03..a8f9af27fe60 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/disable-nss-and-gpgmepp.patch.1 \ external/poppler/gcc7-EntityInfo.patch.1 \ external/poppler/gcc7-GfxFont.patch.1 \ + external/poppler/std_charconv.patch.1 \ external/poppler/poppler-config.patch.1 \ )) diff --git a/external/poppler/disable-nss-and-gpgmepp.patch.1 b/external/poppler/disable-nss-and-gpgmepp.patch.1 index 01b442f53a1c..1d7f7f933433 100644 --- a/external/poppler/disable-nss-and-gpgmepp.patch.1 +++ b/external/poppler/disable-nss-and-gpgmepp.patch.1 @@ -11,7 +11,7 @@ disable NSS/GPGMEPP dependent code. #include "SignatureInfo.h" #include "CertificateInfo.h" #include "XRef.h" -@@ -577,7 +577,7 @@ +@@ -578,7 +578,7 @@ { return static_cast<FormFieldSignature *>(field)->validateSignature(doVerifyCert, forceRevalidation, validationTime, ocspRevocationCheck, enableAIA); } @@ -20,12 +20,12 @@ disable NSS/GPGMEPP dependent code. // update hash with the specified range of data from the file static bool hashFileRange(FILE *f, CryptoSign::SigningInterface *handler, Goffset start, Goffset end) { -@@ -607,10 +607,12 @@ +@@ -608,10 +608,12 @@ delete[] buf; return true; } +#endif - + bool FormWidgetSignature::signDocument(const std::string &saveFilename, const std::string &certNickname, const std::string &password, const GooString *reason, const GooString *location, const std::optional<GooString> &ownerPassword, const std::optional<GooString> &userPassword) { @@ -33,44 +33,46 @@ disable NSS/GPGMEPP dependent code. auto backend = CryptoSign::Factory::createActive(); if (!backend) { return false; -@@ -698,6 +700,8 @@ +@@ -697,8 +699,8 @@ + signatureField->setSignature(*signature); + fclose(file); - - return true; +- +- return true; +#endif + return false; } - - bool FormWidgetSignature::signDocumentWithAppearance(const std::string &saveFilename, const std::string &certNickname, const std::string &password, const GooString *reason, const GooString *location, -@@ -2316,6 +2320,7 @@ - + + static std::tuple<double, double> calculateDxDy(int rot, const PDFRectangle *rect) +@@ -2355,6 +2357,7 @@ + void FormFieldSignature::hashSignedDataBlock(CryptoSign::VerificationInterface *handler, Goffset block_len) { +#if 0 if (!handler) { return; } -@@ -2335,6 +2340,7 @@ +@@ -2374,6 +2377,7 @@ i += BLOCK_SIZE; } } +#endif } - + FormSignatureType FormWidgetSignature::signatureType() const -@@ -2349,6 +2355,7 @@ - +@@ -2388,6 +2392,7 @@ + SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool enableAIA) { +#if 0 auto backend = CryptoSign::Factory::createActive(); if (!backend) { return signature_info; -@@ -2425,6 +2432,7 @@ +@@ -2464,6 +2469,7 @@ const CertificateValidationStatus cert_val_state = signature_handler->validateCertificate(std::chrono::system_clock::from_time_t(validationTime), ocspRevocationCheck, enableAIA); signature_info->setCertificateValStatus(cert_val_state); - + +#endif return signature_info; } - + diff --git a/external/poppler/std_charconv.patch.1 b/external/poppler/std_charconv.patch.1 new file mode 100644 index 000000000000..c1377fec013d --- /dev/null +++ b/external/poppler/std_charconv.patch.1 @@ -0,0 +1,30 @@ +no <charconv> in baseline GCC 7 + +--- poppler/fofi/FoFiType1.cc.orig 2025-01-09 14:07:47.367442683 +0100 ++++ poppler/fofi/FoFiType1.cc 2025-01-09 14:15:26.553919121 +0100 +@@ -28,7 +28,8 @@ + + #include <config.h> + +-#include <charconv> ++#include <boost/convert.hpp> ++#include <boost/convert/stream.hpp> + #include <optional> + + #include <cstdlib> +@@ -281,9 +282,13 @@ + + int code = 0; + if (codeToken->length() > 2 && codeToken->at(0) == '8' && codeToken->at(1) == '#') { +- std::from_chars(codeToken->data() + 2, codeToken->data() + codeToken->length(), code, 8); ++ boost::cnv::cstream ccnv; ++ std::string_view temp(codeToken->data() + 2, codeToken->length() - 2); ++ code = boost::convert<int>(temp, ccnv(std::oct)).value_or(-1); + } else { +- std::from_chars(codeToken->data(), codeToken->data() + codeToken->length(), code); ++ boost::cnv::cstream ccnv; ++ std::string_view temp(codeToken->data(), codeToken->length()); ++ code = boost::convert<int>(temp, ccnv(std::dec)).value_or(-1); + } + + if (code >= 0 && code < 256 && nameToken->length() > 1) { commit 5435765d563507bd2fa0b621bfb7a8c4996cb0ab Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Mon Sep 25 15:50:43 2023 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: upgrade to release 23.09.0 Fixes CVE-2023-34872 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157247 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 3d31dfa9b99d0df5e400c1a6d7e8df6c46129b3c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157253 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit 6d1c0e802eaefa1c42051c1456be61cef2dc2e86) Change-Id: I289b3016695a01aff7d393cb09d66cd726d9b592 (cherry picked from commit 9b1fdad86d0e652f134a5d78dc6f9aefd35bf739) diff --git a/download.lst b/download.lst index 2b9486e6257c..76d7f0f2f699 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := d38c6b2f31c8f6f3727fb60a011a0e6c567ebf56ef1ccad36263ca9ed6448a65 -POPPLER_TARBALL := poppler-23.06.0.tar.xz +POPPLER_SHA256SUM := 80d1d44dd8bdf4ac1a47d56c5065075eb9991790974b1ed7d14b972acde88e55 +POPPLER_TARBALL := poppler-23.09.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index 4915c5e81fff..62877a0f0059 100644 --- a/external/poppler/StaticLibrary_poppler.mk +++ b/external/poppler/StaticLibrary_poppler.mk @@ -11,7 +11,10 @@ $(eval $(call gb_StaticLibrary_StaticLibrary,poppler)) $(eval $(call gb_StaticLibrary_use_unpacked,poppler,poppler)) -$(eval $(call gb_StaticLibrary_use_external,poppler,libjpeg)) +$(eval $(call gb_StaticLibrary_use_externals,poppler,\ + libjpeg \ + zlib \ +)) $(eval $(call gb_StaticLibrary_set_warnings_disabled,poppler)) @@ -90,6 +93,7 @@ $(eval $(call gb_StaticLibrary_add_generated_exception_objects,poppler,\ UnpackedTarball/poppler/poppler/FDPDFDocBuilder \ UnpackedTarball/poppler/poppler/FILECacheLoader \ UnpackedTarball/poppler/poppler/FileSpec \ + UnpackedTarball/poppler/poppler/FlateEncoder \ UnpackedTarball/poppler/poppler/FontEncodingTables \ UnpackedTarball/poppler/poppler/FontInfo \ UnpackedTarball/poppler/poppler/Form \ diff --git a/external/poppler/disable-freetype.patch.1 b/external/poppler/disable-freetype.patch.1 index 77c643de40f5..3c4d1d0f7a8a 100644 --- a/external/poppler/disable-freetype.patch.1 +++ b/external/poppler/disable-freetype.patch.1 @@ -19,9 +19,9 @@ disable freetype dependent code -#include FT_FREETYPE_H +//#include <ft2build.h> +//#include FT_FREETYPE_H + #include <unordered_set> // helper for using std::visit to get a dependent false for static_asserts - // to help get compile errors if one ever extends variants @@ -2760,6 +2760,8 @@ Form::AddFontResult Form::addFontToDefaultResources(const std::string &filepath, int faceIndex, const std::string &fontFamily, const std::string &fontStyle, bool forceName) diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 index be8fc98556a7..8f71e987b2b9 100644 --- a/external/poppler/poppler-config.patch.1 +++ b/external/poppler/poppler-config.patch.1 @@ -2,7 +2,7 @@ note: to get the 3rd one, use -DENABLE_CPP=on -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_GPGME=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 -DENABLE_QT6 +mkdir build && cd build && cmake .. -DENABLE_DCTDECODER=libjpeg -DHAVE_CAIRO=off -DENABLE_LIBOPENJPEG=none -DENABLE_CMS=none -DENABLE_LIBCURL=off -DENABLE_ZLIB_UNCOMPRESS=off -DENABLE_GPGME=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 -DENABLE_QT6=off manually disabled these because cmake failed to do it: HAVE_CAIRO @@ -37,9 +37,6 @@ index 0fbd336a..451213f8 100644 +/* 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 */ + @@ -182,7 +179,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_NAME "poppler" + +/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "poppler 23.06.0" ++#define PACKAGE_STRING "poppler 23.09.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "poppler" @@ -191,7 +188,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_URL "" + +/* Define to the version of this package. */ -+#define PACKAGE_VERSION "23.06.0" ++#define PACKAGE_VERSION "23.09.0" + +/* Poppler data dir */ +#define POPPLER_DATADIR "/usr/local/share/poppler" @@ -209,12 +206,15 @@ index 0fbd336a..451213f8 100644 +/* #undef USE_FLOAT */ + +/* Version number of package */ -+#define VERSION "23.06.0" ++#define VERSION "23.09.0" + +#if defined(__APPLE__) +#elif defined (_WIN32) +/* Use win32 font configuration backend */ +#define WITH_FONTCONFIGURATION_WIN32 1 ++#elif defined (__ANDROID__) ++/* Use android font configuration backend */ ++#define WITH_FONTCONFIGURATION_ANDROID 1 +#else +/* Use fontconfig font configuration backend */ +#define WITH_FONTCONFIGURATION_FONTCONFIG 1 @@ -251,7 +251,7 @@ new file mode 100644 index 0fbd336a..451213f8 100644 --- /dev/null +++ b/poppler/poppler-config.h -@@ -0,0 +1,161 @@ +@@ -0,0 +1,156 @@ +//================================================= -*- mode: c++ -*- ==== +// +// poppler-config.h @@ -290,7 +290,7 @@ index 0fbd336a..451213f8 100644 + +/* Defines the poppler version. */ +#ifndef POPPLER_VERSION -+#define POPPLER_VERSION "23.06.0" ++#define POPPLER_VERSION "23.09.0" +#endif + +/* Use single precision arithmetic in the Splash backend */ @@ -328,11 +328,6 @@ index 0fbd336a..451213f8 100644 +/* #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 @@ -442,9 +437,9 @@ index 0fbd336a..451213f8 100644 + +#include "poppler-global.h" + -+#define POPPLER_VERSION "23.06.0" ++#define POPPLER_VERSION "23.09.0" +#define POPPLER_VERSION_MAJOR 23 -+#define POPPLER_VERSION_MINOR 06 ++#define POPPLER_VERSION_MINOR 9 +#define POPPLER_VERSION_MICRO 0 + +namespace poppler commit 47506aac3f5a754e7fa8dbd8adeb52c410962eae Author: Taichi Haradaguchi <20001...@ymail.ne.jp> AuthorDate: Wed Jun 14 09:58:15 2023 +0900 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: upgrade to release 23.06.0 Add external/poppler/disable-nss-and-gpgmepp.patch.1 to get rid of some code that requires NSS or GPGMEPP. Update external/poppler/inc/pch/precompiled_poppler.hxx. Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153097 Tested-by: Jenkins Reviewed-by: Taichi Haradaguchi <20001...@ymail.ne.jp> (cherry picked from commit 27e1c198a504deb4634f5f6673a77b5944c9f8cc) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157252 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 038bd4f5bd878bedda8cfee9cad2c28dba482d79) Change-Id: I5e61371776c64962452022516446b5079c3840e2 (cherry picked from commit 24190bd4f8d28f4b67b644457741d184964bcfc7) diff --git a/download.lst b/download.lst index 08144e0449f6..2b9486e6257c 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := b04148bf849c1965ada7eff6be4685130e3a18a84e0cce73bf9bc472ec32f2b4 -POPPLER_TARBALL := poppler-23.03.0.tar.xz +POPPLER_SHA256SUM := d38c6b2f31c8f6f3727fb60a011a0e6c567ebf56ef1ccad36263ca9ed6448a65 +POPPLER_TARBALL := poppler-23.06.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/README b/external/poppler/README index 35a640264618..08d3612c3542 100644 --- a/external/poppler/README +++ b/external/poppler/README @@ -1 +1 @@ -From [http://poppler.freedesktop.org/]. Not modified. PDF rendering library based on the xpdf-3.0 code base. +From [https://poppler.freedesktop.org/]. Not modified. PDF rendering library based on the xpdf-3.0 code base. diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk index aded0978fad9..cc4f67754a03 100644 --- a/external/poppler/UnpackedTarball_poppler.mk +++ b/external/poppler/UnpackedTarball_poppler.mk @@ -13,6 +13,7 @@ $(eval $(call gb_UnpackedTarball_set_tarball,poppler,$(POPPLER_TARBALL),,poppler $(eval $(call gb_UnpackedTarball_add_patches,poppler,\ external/poppler/disable-freetype.patch.1 \ + external/poppler/disable-nss-and-gpgmepp.patch.1 \ external/poppler/gcc7-EntityInfo.patch.1 \ external/poppler/gcc7-GfxFont.patch.1 \ external/poppler/poppler-config.patch.1 \ diff --git a/external/poppler/disable-freetype.patch.1 b/external/poppler/disable-freetype.patch.1 index 710742206925..77c643de40f5 100644 --- a/external/poppler/disable-freetype.patch.1 +++ b/external/poppler/disable-freetype.patch.1 @@ -1,8 +1,8 @@ disable freetype dependent code ---- poppler/poppler/Form.cc.orig 2022-09-14 15:46:48.588316681 +0200 -+++ poppler/poppler/Form.cc 2022-09-14 15:48:01.468274551 +0200 -@@ -46,7 +46,7 @@ +--- poppler/poppler/Form.cc.orig 2023-06-05 19:29:14.000000000 +0900 ++++ poppler/poppler/Form.cc 2023-06-14 18:50:22.232312300 +0900 +@@ -48,7 +48,7 @@ #include <cstdlib> #include <cstring> #include <cctype> @@ -11,7 +11,7 @@ disable freetype dependent code #include "goo/gmem.h" #include "goo/gfile.h" #include "goo/GooString.h" -@@ -77,8 +77,8 @@ +@@ -78,8 +78,8 @@ #include "fofi/FoFiTrueType.h" #include "fofi/FoFiIdentifier.h" @@ -20,18 +20,18 @@ disable freetype dependent code +//#include <ft2build.h> +//#include FT_FREETYPE_H - // return a newly allocated char* containing an UTF16BE string of size length - char *pdfDocEncodingToUTF16(const std::string &orig, int *length) -@@ -2743,6 +2743,8 @@ + // helper for using std::visit to get a dependent false for static_asserts + // to help get compile errors if one ever extends variants +@@ -2760,6 +2760,8 @@ - Form::AddFontResult Form::addFontToDefaultResources(const std::string &filepath, int faceIndex, const std::string &fontFamily, const std::string &fontStyle) + Form::AddFontResult Form::addFontToDefaultResources(const std::string &filepath, int faceIndex, const std::string &fontFamily, const std::string &fontStyle, bool forceName) { + return {}; +#if 0 if (!GooString::endsWith(filepath, ".ttf") && !GooString::endsWith(filepath, ".ttc") && !GooString::endsWith(filepath, ".otf")) { error(errIO, -1, "We only support embedding ttf/ttc/otf fonts for now. The font file for {0:s} {1:s} was {2:s}", fontFamily.c_str(), fontStyle.c_str(), filepath.c_str()); return {}; -@@ -2951,6 +2953,7 @@ +@@ -2994,6 +2996,7 @@ } return { dictFontName, fontDictRef }; diff --git a/external/poppler/disable-nss-and-gpgmepp.patch.1 b/external/poppler/disable-nss-and-gpgmepp.patch.1 new file mode 100644 index 000000000000..01b442f53a1c --- /dev/null +++ b/external/poppler/disable-nss-and-gpgmepp.patch.1 @@ -0,0 +1,76 @@ +disable NSS/GPGMEPP dependent code. + +--- poppler/poppler/Form.cc.orig 2023-06-05 19:29:14.000000000 +0900 ++++ poppler/poppler/Form.cc 2023-06-17 16:51:27.873431500 +0900 +@@ -64,7 +64,7 @@ + #include "Form.h" + #include "PDFDoc.h" + #include "DateInfo.h" +-#include "CryptoSignBackend.h" ++/*#include "CryptoSignBackend.h"*/ + #include "SignatureInfo.h" + #include "CertificateInfo.h" + #include "XRef.h" +@@ -577,7 +577,7 @@ + { + return static_cast<FormFieldSignature *>(field)->validateSignature(doVerifyCert, forceRevalidation, validationTime, ocspRevocationCheck, enableAIA); + } +- ++#if 0 + // update hash with the specified range of data from the file + static bool hashFileRange(FILE *f, CryptoSign::SigningInterface *handler, Goffset start, Goffset end) + { +@@ -607,10 +607,12 @@ + delete[] buf; + return true; + } ++#endif + + bool FormWidgetSignature::signDocument(const std::string &saveFilename, const std::string &certNickname, const std::string &password, const GooString *reason, const GooString *location, const std::optional<GooString> &ownerPassword, + const std::optional<GooString> &userPassword) + { ++#if 0 + auto backend = CryptoSign::Factory::createActive(); + if (!backend) { + return false; +@@ -698,6 +700,8 @@ + fclose(file); + + return true; ++#endif ++ return false; + } + + bool FormWidgetSignature::signDocumentWithAppearance(const std::string &saveFilename, const std::string &certNickname, const std::string &password, const GooString *reason, const GooString *location, +@@ -2316,6 +2320,7 @@ + + void FormFieldSignature::hashSignedDataBlock(CryptoSign::VerificationInterface *handler, Goffset block_len) + { ++#if 0 + if (!handler) { + return; + } +@@ -2335,6 +2340,7 @@ + i += BLOCK_SIZE; + } + } ++#endif + } + + FormSignatureType FormWidgetSignature::signatureType() const +@@ -2349,6 +2355,7 @@ + + SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool forceRevalidation, time_t validationTime, bool ocspRevocationCheck, bool enableAIA) + { ++#if 0 + auto backend = CryptoSign::Factory::createActive(); + if (!backend) { + return signature_info; +@@ -2425,6 +2432,7 @@ + const CertificateValidationStatus cert_val_state = signature_handler->validateCertificate(std::chrono::system_clock::from_time_t(validationTime), ocspRevocationCheck, enableAIA); + signature_info->setCertificateValStatus(cert_val_state); + ++#endif + return signature_info; + } + diff --git a/external/poppler/gcc7-EntityInfo.patch.1 b/external/poppler/gcc7-EntityInfo.patch.1 index b450bff93af9..1dd7c83ad475 100644 --- a/external/poppler/gcc7-EntityInfo.patch.1 +++ b/external/poppler/gcc7-EntityInfo.patch.1 @@ -2,28 +2,35 @@ gcc 7.3.1 says: workdir/UnpackedTarball/poppler/poppler/CertificateInfo.cc:42:34: error: function ‘X509CertificateInfo::EntityInfo& X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’ ---- poppler/poppler/CertificateInfo.h.orig 2022-09-14 19:32:12.426351385 +0200 -+++ poppler/poppler/CertificateInfo.h 2022-09-14 19:32:18.947347812 +0200 -@@ -70,7 +70,7 @@ - ~EntityInfo(); - - EntityInfo(EntityInfo &&) noexcept; -- EntityInfo &operator=(EntityInfo &&) noexcept; -+ EntityInfo &operator=(EntityInfo &&) /*noexcept*/; - - EntityInfo(const EntityInfo &) = delete; - EntityInfo &operator=(const EntityInfo &) = delete; ---- poppler/poppler/CertificateInfo.cc.orig 2022-09-14 19:31:10.225385467 +0200 -+++ poppler/poppler/CertificateInfo.cc 2022-09-14 19:31:12.572384182 +0200 -@@ -39,7 +39,7 @@ +workdir/UnpackedTarball/poppler/poppler/CertificateInfo.cc: In member function ‘void X509CertificateInfo::setPublicKeyInfo(X509CertificateInfo::PublicKeyInfo&&)’: +workdir/UnpackedTarball/poppler/poppler/CertificateInfo.cc:106:39: error: use of deleted function ‘X509CertificateInfo::PublicKeyInfo& X509CertificateInfo::PublicKeyInfo::operator=(X509CertificateInfo::PublicKeyInfo&&)’ + public_key_info = std::move(pkInfo); + ^ +In file included from workdir/UnpackedTarball/poppler/poppler/CertificateInfo.cc:15:0: +workdir/UnpackedTarball/poppler/poppler/CertificateInfo.h:58:24: note: ‘X509CertificateInfo::PublicKeyInfo& X509CertificateInfo::PublicKeyInfo::operator=(X509CertificateInfo::PublicKeyInfo&&) noexcept’ is implicitly deleted because its exception-specification does not match the implicit exception-specification ‘’ + PublicKeyInfo &operator=(PublicKeyInfo &&) noexcept = default; + ^~~~~~~~ + +--- poppler/poppler/CertificateInfo.h.orig 2023-06-05 19:29:14.000000000 +0900 ++++ poppler/poppler/CertificateInfo.h 2023-06-19 18:10:55.760031700 +0900 +@@ -55,7 +55,7 @@ + PublicKeyInfo() = default; - X509CertificateInfo::EntityInfo::EntityInfo(X509CertificateInfo::EntityInfo &&other) noexcept = default; + PublicKeyInfo(PublicKeyInfo &&) noexcept = default; +- PublicKeyInfo &operator=(PublicKeyInfo &&) noexcept = default; ++ PublicKeyInfo &operator=(PublicKeyInfo &&) /*noexcept*/ = default; --X509CertificateInfo::EntityInfo &X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo &&other) noexcept = default; -+X509CertificateInfo::EntityInfo &X509CertificateInfo::EntityInfo::operator=(X509CertificateInfo::EntityInfo &&other) /*noexcept*/ = default; + PublicKeyInfo(const PublicKeyInfo &) = delete; + PublicKeyInfo &operator=(const PublicKeyInfo &) = delete; +@@ -71,7 +71,7 @@ + ~EntityInfo() = default; - X509CertificateInfo::X509CertificateInfo() : ku_extensions(KU_NONE), cert_version(-1), is_self_signed(false) { } + EntityInfo(EntityInfo &&) noexcept = default; +- EntityInfo &operator=(EntityInfo &&) noexcept = default; ++ EntityInfo &operator=(EntityInfo &&) /*noexcept*/ = default; + EntityInfo(const EntityInfo &) = delete; + EntityInfo &operator=(const EntityInfo &) = delete; --- poppler/poppler/GfxFont.cc.orig 2022-09-14 20:24:32.569607333 +0200 +++ poppler/poppler/GfxFont.cc 2022-09-14 20:24:52.323596186 +0200 @@ -180,7 +180,7 @@ diff --git a/external/poppler/poppler-config.patch.1 b/external/poppler/poppler-config.patch.1 index 503cf1c0ae46..be8fc98556a7 100644 --- a/external/poppler/poppler-config.patch.1 +++ b/external/poppler/poppler-config.patch.1 @@ -2,7 +2,7 @@ note: to get the 3rd one, use -DENABLE_CPP=on -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 +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_GPGME=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 -DENABLE_QT6 manually disabled these because cmake failed to do it: HAVE_CAIRO @@ -16,7 +16,7 @@ new file mode 100644 index 0fbd336a..451213f8 100644 --- /dev/null +++ b/config.h -@@ -0,0 +1,220 @@ +@@ -0,0 +1,229 @@ +/* config.h. Generated from config.h.cmake by cmake. */ + +/* Build against libcurl. */ @@ -46,6 +46,15 @@ index 0fbd336a..451213f8 100644 +/* Build against libnss3 for digital signature validation */ +/* #define ENABLE_NSS3 1 */ + ++/* Build against libgpgme for digital signature validation */ ++/* #undef ENABLE_GPGME */ ++ ++/* Signatures enabled */ ++/* #define ENABLE_SIGNATURES 1 */ ++ ++/* Default signature backend */ ++/* #define DEFAULT_SIGNATURE_BACKEND "NSS" */ ++ +/* Use cairo for rendering. */ +/* #define HAVE_CAIRO 1 */ + @@ -173,7 +182,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_NAME "poppler" + +/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "poppler 23.03.0" ++#define PACKAGE_STRING "poppler 23.06.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "poppler" @@ -182,7 +191,7 @@ index 0fbd336a..451213f8 100644 +#define PACKAGE_URL "" + +/* Define to the version of this package. */ -+#define PACKAGE_VERSION "23.03.0" ++#define PACKAGE_VERSION "23.06.0" + +/* Poppler data dir */ +#define POPPLER_DATADIR "/usr/local/share/poppler" @@ -200,7 +209,7 @@ index 0fbd336a..451213f8 100644 +/* #undef USE_FLOAT */ + +/* Version number of package */ -+#define VERSION "23.03.0" ++#define VERSION "23.06.0" + +#if defined(__APPLE__) +#elif defined (_WIN32) @@ -281,7 +290,7 @@ index 0fbd336a..451213f8 100644 + +/* Defines the poppler version. */ +#ifndef POPPLER_VERSION -+#define POPPLER_VERSION "23.03.0" ++#define POPPLER_VERSION "23.06.0" +#endif + +/* Use single precision arithmetic in the Splash backend */ @@ -373,7 +382,7 @@ index 0fbd336a..451213f8 100644 +//------------------------------------------------------------------------ + +// copyright notice -+#define popplerCopyright "Copyright 2005-2022 The Poppler Developers - http://poppler.freedesktop.org" ++#define popplerCopyright "Copyright 2005-2023 The Poppler Developers - http://poppler.freedesktop.org" +#define xpdfCopyright "Copyright 1996-2011, 2022 Glyph & Cog, LLC" + +//------------------------------------------------------------------------ @@ -433,9 +442,9 @@ index 0fbd336a..451213f8 100644 + +#include "poppler-global.h" + -+#define POPPLER_VERSION "23.03.0" ++#define POPPLER_VERSION "23.06.0" +#define POPPLER_VERSION_MAJOR 23 -+#define POPPLER_VERSION_MINOR 03 ++#define POPPLER_VERSION_MINOR 06 +#define POPPLER_VERSION_MICRO 0 + +namespace poppler commit 4faec2df0ba676eb010bf52100dfb80b2131ee80 Author: Taichi Haradaguchi <20001...@ymail.ne.jp> AuthorDate: Tue Mar 14 19:01:26 2023 +0900 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Tue Mar 11 11:53:26 2025 +0100 poppler: upgrade to release 23.03.0 * Upgrade poppler-data to 0.4.12 * Update poppler-config.patch.1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148842 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 79e60bb93f69370f23010adb078b5a5de5a1e7b2) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157251 (cherry picked from commit 8aa3645801c48f0db4a7fe4f126c4e4e7691cb08) Change-Id: Ic2a3e8d4f801d52d1568210d0df064cacb51290f (cherry picked from commit 64bb35f0cee0a07984a686dd790b202b7e6afcae) diff --git a/download.lst b/download.lst index b31a71627211..08144e0449f6 100644 --- a/download.lst +++ b/download.lst @@ -475,8 +475,8 @@ LIBPNG_TARBALL := libpng-1.6.37.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -POPPLER_SHA256SUM := d9aa9cacdfbd0f8e98fc2b3bb008e645597ed480685757c3e7bc74b4278d15c0 -POPPLER_TARBALL := poppler-22.12.0.tar.xz +POPPLER_SHA256SUM := b04148bf849c1965ada7eff6be4685130e3a18a84e0cce73bf9bc472ec32f2b4 +POPPLER_TARBALL := poppler-23.03.0.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/poppler/StaticLibrary_poppler.mk b/external/poppler/StaticLibrary_poppler.mk index 1f1adba6ee34..4915c5e81fff 100644 -e ... etc. - the rest is truncated