diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-06-29 12:04:12 +0100 |
commit | 0f558761aa2dee1017b4751e4017205e015a9560 (patch) | |
tree | 037df795519468a25d9362b4e95cdaeb84eb1cf9 /dev-libs/icu | |
parent | 752d6256e5204b958b0ef7905675a940b5e9172f (diff) |
gentoo resync : 29.12.2022
Diffstat (limited to 'dev-libs/icu')
-rw-r--r-- | dev-libs/icu/Manifest | 6 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch | 38 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch | 202 | ||||
-rw-r--r-- | dev-libs/icu/icu-70.1-r1.ebuild | 146 | ||||
-rw-r--r-- | dev-libs/icu/icu-71.1-r1.ebuild (renamed from dev-libs/icu/icu-71.1.ebuild) | 6 |
5 files changed, 209 insertions, 189 deletions
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest index 7fc24cd7d704..304d2e7b1cf2 100644 --- a/dev-libs/icu/Manifest +++ b/dev-libs/icu/Manifest @@ -2,10 +2,8 @@ AUX icu-64.2-darwin.patch 2136 BLAKE2B 3c54a15e351a97f7c423128e493ed158e56191738 AUX icu-65.1-remove-bashisms.patch 4963 BLAKE2B fb781741a7a908638876729d573a73e42b7b3f0f3e692b54799fed0dac006ecb731583d90d849ea06be47259a0a236933fa7a78a96b3a8107ee85f916dc2000a SHA512 67e60068c356ca8d93b137eadeef2562ff7d8f38153babc97edd92a2c38d7113396d63d4a09364dacefc612b4b3ea28872a4f767c4f38d3e725943b32f98c5bc AUX icu-68.1-nonunicode.patch 477 BLAKE2B 5e74142e5adbf8f3fffa23c8fb08657b5b75d12941db39980abea1fff2328c112196b62cc89d521e8cc2a1f7c11b58816401a838bb8fcbe50036e80d3d9e4343 SHA512 5d605cc1cbbd16221603a9509d07713d64201f4fc1a372d29c18f8d49a4618fcd7e0a0bb0a459024a288e5c2c339a9aa0849abe88691ee2cdb24b92c9b61e290 AUX icu-69.1-fix-ub-units.patch 866 BLAKE2B 29b849c08bd0ddb19ee03c37f34873819307a0daa53c00724ea27842829acc895a9a9fffd7a0ef03d5629d17f15399be3df7a2f0270dbbf65512dbfc0f41f66e SHA512 d3d72909643ffb2d3f4407d6e9259b661f7ee033bcc8b35a7a771d8c2c6295a7bf1139ad8b6aee14f3a2291d15c3dfbbc847aeeb1fe60c64c4f2dc202e34d88b -AUX icu-70.1-fix-ucptrietest.patch 1086 BLAKE2B a61919181c015c5f4673ba7ca6513f50e3f6ac3b5a3fc4541ace854cd44b8d77fc4752c91c90c0275647a65b83f56061619726c714296dee7db6906a5f4b7e8d SHA512 57c08fc2fab69050b338f3830581087d69311ae1a622b1b48e7986822219fc728c981b1434c30fa15bd21c528a64672ebf5dcfbedbfb0f8ab401c3d1278dd4a1 -DIST icu4c-70_1-src.tgz 25449582 BLAKE2B e229376ee45322db99aa963465048ab5e694ce9f0ba335f071817198238de21fcd77dfe3e86ea1394790e2a3b6d96772d1b98cb7dccd6462a9dd05c0ab7bdef0 SHA512 0b26ae7207155cb65a8fdb25f7b2fa4431e74b12bccbed0884a17feaae3c96833d12451064dd152197fd6ea5fd3adfd95594284a463e66c82e0d860f645880c9 +AUX icu-71.1-CVE-2022-1638.patch 8694 BLAKE2B 2277f0f066609817d0c5ef78f50f33f82c8575152b185a4c79d334a79c38ad902742c9f0558b90a33191d913df46e4b97356c0d7914d5f7bb4451fb388815c97 SHA512 3c6358120247bd094fec7a8e73f51445f979da5eda87c3a272f4df59625e1345237fe924d94824ad6f0785c8c1d70ee2ecb8a54abf9078c6510bee088adda2c8 DIST icu4c-71_1-src.tgz 25701340 BLAKE2B 182972d87fe5b69b5e08c39ab9bb0ac7ffc7b36530168b3548faa051cce2b73b9f1c1d23198a4b1c655442155e369da76929e4f54fe4e32265160363428d4916 SHA512 1fd2a20aef48369d1f06e2bb74584877b8ad0eb529320b976264ec2db87420bae242715795f372dbc513ea80047bc49077a064e78205cd5e8b33d746fd2a2912 DIST icu4c-71_1-src.tgz.asc 659 BLAKE2B ac281e0a9b94bf6bfddee2dd5dc7553836aa50ae84f55478a662d0cd1e116a944de92dd5fd701164d62fb5b8e8effcdb3456a151a6b198d603e2324ccd76e334 SHA512 3371e14f3959defa7fb8d3eb0308084646ed553169b7a845bff89f9a8c1054ef5bee45c26c1834a84cab38fa87710f1585e6c5787be1fe2df356eb5c2ba20aae -EBUILD icu-70.1-r1.ebuild 3694 BLAKE2B 3e47d60528a8330807d3238de5c4e55c5179d77b676ead14bbe421289424758199967665ce2236a98636ee252e6245c8184e5535e1aed922043860c3b785c2f2 SHA512 9abfec28beb93afa6a7faf3eb55ab7e4c2492c1e433e12b8d7bf8b65fbb89478fc18f5dd732245d932009f070aec70321800bbe0649570e6dbbc1fd970352cc6 -EBUILD icu-71.1.ebuild 3978 BLAKE2B 3479146402150877b37c0f55f0fae978caf01640ecf51ce836b2acc362c765f110a7f7721c6882fa17134dcab8b54ddb4b20d7f5f45a7d3c7b0dab5ea4b5f3e3 SHA512 c43a937b6daeb90a365039abb9946800eeae1626321983e22cca0ec9b3dee5a2078a666323422550a73c33b164af25b11dc29002502a4b040c8b304acbae1694 +EBUILD icu-71.1-r1.ebuild 4179 BLAKE2B 3eb72b51387207e69956ce24faeb478b88a5fe7e2b01aa684d98bccece6e033dbdac9caf7690b67ec4a0dc19bd6185b4b4dd72ccbf8c9c9e725a0fad6d184924 SHA512 4afe643f51da7ee92b3794eb35f39f9c3d84d8486bfbce624daaa9b7448cdf5fb20943ab6ee130ab47dfef84cb4b5a2839fc4fa12bdd99ed8d369eb2a0827b72 MISC metadata.xml 256 BLAKE2B 28554175365761f81817e75e2c125714b94680527103d72118d0daf2eb0d2359082c36f2c8b0e92574e93c9c00038c944486a31d7843108dcc285d809bd52fe6 SHA512 1a0e13dd42f80f5c8669910c7360c6c1542e9a2f143da3a812f874966ba4729248152efb36e03bdfd47f09086797e6e1410e1ac735925d304811c847aa2b6398 diff --git a/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch b/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch deleted file mode 100644 index 05d390a1284a..000000000000 --- a/dev-libs/icu/files/icu-70.1-fix-ucptrietest.patch +++ /dev/null @@ -1,38 +0,0 @@ -Fixes test failure on arm. - -https://github.com/unicode-org/icu/pull/1925 -https://unicode-org.atlassian.net/browse/ICU-21793 - -From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= <kapouer@melix.org> -Date: Wed, 3 Nov 2021 02:31:18 +0100 -Subject: [PATCH] ICU-21793 Fix ucptrietest golden diff - ---- a/tools/toolutil/toolutil.cpp -+++ b/tools/toolutil/toolutil.cpp -@@ -228,18 +228,19 @@ uprv_compareGoldenFiles( - std::ifstream ifs(goldenFilePath, std::ifstream::in); - int32_t pos = 0; - char c; -- while ((c = ifs.get()) != std::char_traits<char>::eof() && pos < bufferLen) { -+ while (ifs.get(c) && pos < bufferLen) { - if (c != buffer[pos]) { - // Files differ at this position -- return pos; -+ break; - } - pos++; - } -- if (pos < bufferLen || c != std::char_traits<char>::eof()) { -- // Files are different lengths -- return pos; -+ if (pos == bufferLen && ifs.eof()) { -+ // Files are same lengths -+ pos = -1; - } -- return -1; -+ ifs.close(); -+ return pos; - } - - /*U_CAPI UDate U_EXPORT2 - diff --git a/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch b/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch new file mode 100644 index 000000000000..216ed7894473 --- /dev/null +++ b/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch @@ -0,0 +1,202 @@ +From e96e9410bde06962c211fa6f21c3d91263a90f86 Mon Sep 17 00:00:00 2001 +From: Frank Tang <ftang@chromium.org> +Date: Fri, 29 Apr 2022 22:50:33 +0000 +Subject: [PATCH] ICU-22005 Fix int32 overflow in FormattedStringBuilder + +See #2070 +--- + .../i18n/formatted_string_builder.cpp | 55 +++++++++++++------ + .../formatted_string_builder_test.cpp | 41 ++++++++++++++ + 2 files changed, 79 insertions(+), 17 deletions(-) + +diff --git a/i18n/formatted_string_builder.cpp b/i18n/formatted_string_builder.cpp +index 734078644b8..628fbea8711 100644 +--- a/i18n/formatted_string_builder.cpp ++++ b/i18n/formatted_string_builder.cpp +@@ -6,6 +6,7 @@ + #if !UCONFIG_NO_FORMATTING + + #include "formatted_string_builder.h" ++#include "putilimp.h" + #include "unicode/ustring.h" + #include "unicode/utf16.h" + #include "unicode/unum.h" // for UNumberFormatFields literals +@@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unicod + int32_t thisLength = endThis - startThis; + int32_t otherLength = endOther - startOther; + int32_t count = otherLength - thisLength; ++ if (U_FAILURE(status)) { ++ return count; ++ } + int32_t position; + if (count > 0) { + // Overall, chars need to be added. +@@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UErr + + int32_t + FormattedStringBuilder::insert(int32_t index, const FormattedStringBuilder &other, UErrorCode &status) { ++ if (U_FAILURE(status)) { ++ return 0; ++ } + if (this == &other) { + status = U_ILLEGAL_ARGUMENT_ERROR; + return 0; +@@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t count, U + U_ASSERT(index >= 0); + U_ASSERT(index <= fLength); + U_ASSERT(count >= 0); ++ U_ASSERT(fZero >= 0); ++ U_ASSERT(fLength >= 0); ++ U_ASSERT(getCapacity() - fZero >= fLength); ++ if (U_FAILURE(status)) { ++ return count; ++ } + if (index == 0 && fZero - count >= 0) { + // Append to start + fZero -= count; + fLength += count; + return fZero; +- } else if (index == fLength && fZero + fLength + count < getCapacity()) { ++ } else if (index == fLength && count <= getCapacity() - fZero - fLength) { + // Append to end + fLength += count; + return fZero + fLength - count; +@@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co + int32_t oldZero = fZero; + char16_t *oldChars = getCharPtr(); + Field *oldFields = getFieldPtr(); +- if (fLength + count > oldCapacity) { +- if ((fLength + count) > INT32_MAX / 2) { +- // If we continue, then newCapacity will overflow int32_t in the next line. ++ int32_t newLength; ++ if (uprv_add32_overflow(fLength, count, &newLength)) { ++ status = U_INPUT_TOO_LONG_ERROR; ++ return -1; ++ } ++ int32_t newZero; ++ if (newLength > oldCapacity) { ++ if (newLength > INT32_MAX / 2) { ++ // We do not support more than 1G char16_t in this code because ++ // dealing with >2G *bytes* can cause subtle bugs. + status = U_INPUT_TOO_LONG_ERROR; + return -1; + } +- int32_t newCapacity = (fLength + count) * 2; +- int32_t newZero = newCapacity / 2 - (fLength + count) / 2; ++ // Keep newCapacity also to at most 1G char16_t. ++ int32_t newCapacity = newLength * 2; ++ newZero = (newCapacity - newLength) / 2; + + // C++ note: malloc appears in two places: here and in the assignment operator. +- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity)); +- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity)); ++ auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * static_cast<size_t>(newCapacity))); ++ auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * static_cast<size_t>(newCapacity))); + if (newChars == nullptr || newFields == nullptr) { + uprv_free(newChars); + uprv_free(newFields); +@@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co + fChars.heap.capacity = newCapacity; + fFields.heap.ptr = newFields; + fFields.heap.capacity = newCapacity; +- fZero = newZero; +- fLength += count; + } else { +- int32_t newZero = oldCapacity / 2 - (fLength + count) / 2; ++ newZero = (oldCapacity - newLength) / 2; + + // C++ note: memmove is required because src and dest may overlap. + // First copy the entire string to the location of the prefix, and then move the suffix +@@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t co + uprv_memmove2(oldFields + newZero + index + count, + oldFields + newZero + index, + sizeof(Field) * (fLength - index)); +- +- fZero = newZero; +- fLength += count; + } +- U_ASSERT((fZero + index) >= 0); ++ fZero = newZero; ++ fLength = newLength; + return fZero + index; + } + + int32_t FormattedStringBuilder::remove(int32_t index, int32_t count) { +- // TODO: Reset the heap here? (If the string after removal can fit on stack?) ++ U_ASSERT(0 <= index); ++ U_ASSERT(index <= fLength); ++ U_ASSERT(count <= (fLength - index)); ++ U_ASSERT(index <= getCapacity() - fZero); ++ + int32_t position = index + fZero; +- U_ASSERT(position >= 0); ++ // TODO: Reset the heap here? (If the string after removal can fit on stack?) + uprv_memmove2(getCharPtr() + position, + getCharPtr() + position + count, + sizeof(char16_t) * (fLength - index - count)); +diff --git a/test/intltest/formatted_string_builder_test.cpp b/test/intltest/formatted_string_builder_test.cpp +index 45721a320ac..57294e24856 100644 +--- a/test/intltest/formatted_string_builder_test.cpp ++++ b/test/intltest/formatted_string_builder_test.cpp +@@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest { + void testFields(); + void testUnlimitedCapacity(); + void testCodePoints(); ++ void testInsertOverflow(); + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override; + +@@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const + TESTCASE_AUTO(testFields); + TESTCASE_AUTO(testUnlimitedCapacity); + TESTCASE_AUTO(testCodePoints); ++ TESTCASE_AUTO(testInsertOverflow); + TESTCASE_AUTO_END; + } + +@@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() { + assertEquals("Code point count is 2", 2, nsb.codePointCount()); + } + ++void FormattedStringBuilderTest::testInsertOverflow() { ++ if (quick) return; ++ // Setup the test fixture in sb, sb2, ustr. ++ UErrorCode status = U_ZERO_ERROR; ++ FormattedStringBuilder sb; ++ int32_t data_length = INT32_MAX / 2; ++ UnicodeString ustr(data_length, u'a', data_length); ++ sb.append(ustr, kUndefinedField, status); ++ assertSuccess("Setup the first FormattedStringBuilder", status); ++ ++ FormattedStringBuilder sb2; ++ sb2.append(ustr, kUndefinedField, status); ++ sb2.insert(0, ustr, 0, data_length / 2, kUndefinedField, status); ++ sb2.writeTerminator(status); ++ assertSuccess("Setup the second FormattedStringBuilder", status); ++ ++ ustr = sb2.toUnicodeString(); ++ // Complete setting up the test fixture in sb, sb2 and ustr. ++ ++ // Test splice() of the second UnicodeString ++ sb.splice(0, 1, ustr, 1, ustr.length(), ++ kUndefinedField, status); ++ assertEquals( ++ "splice() long text should not crash but return U_INPUT_TOO_LONG_ERROR", ++ U_INPUT_TOO_LONG_ERROR, status); ++ ++ // Test sb.insert() of the first FormattedStringBuilder with the second one. ++ sb.insert(0, sb2, status); ++ assertEquals( ++ "insert() long FormattedStringBuilder should not crash but return " ++ "U_INPUT_TOO_LONG_ERROR", U_INPUT_TOO_LONG_ERROR, status); ++ ++ // Test sb.insert() of the first FormattedStringBuilder with UnicodeString. ++ sb.insert(0, ustr, 0, ustr.length(), kUndefinedField, status); ++ assertEquals( ++ "insert() long UnicodeString should not crash but return " ++ "U_INPUT_TOO_LONG_ERROR", U_INPUT_TOO_LONG_ERROR, status); ++} ++ + void FormattedStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const FormattedStringBuilder &b) { + // TODO: Why won't this compile without the IntlTest:: qualifier? + IntlTest::assertEquals("Lengths should be the same", a.length(), b.length()); diff --git a/dev-libs/icu/icu-70.1-r1.ebuild b/dev-libs/icu/icu-70.1-r1.ebuild deleted file mode 100644 index 50dada47fc08..000000000000 --- a/dev-libs/icu/icu-70.1-r1.ebuild +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{8..10} ) -inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs - -DESCRIPTION="International Components for Unicode" -HOMEPAGE="https://icu.unicode.org/" -SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz" -S="${WORKDIR}/${PN}/source" - -LICENSE="BSD" -SLOT="0/${PV}" -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" -IUSE="debug doc examples static-libs" - -BDEPEND="${PYTHON_DEPS} - sys-devel/autoconf-archive - virtual/pkgconfig - doc? ( app-doc/doxygen[dot] ) -" - -MULTILIB_CHOST_TOOLS=( - /usr/bin/icu-config -) - -PATCHES=( - "${FILESDIR}/${PN}-65.1-remove-bashisms.patch" - "${FILESDIR}/${PN}-64.2-darwin.patch" - "${FILESDIR}/${PN}-68.1-nonunicode.patch" - # Should both be in the next release, but check - # https://bugs.gentoo.org/788112 - "${FILESDIR}/${PN}-69.1-fix-ub-units.patch" - "${FILESDIR}/${PN}-70.1-fix-ucptrietest.patch" -) - -src_prepare() { - default - - # Disable renaming as it is stupid thing to do - sed -i \ - -e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \ - common/unicode/uconfig.h || die - - # Fix linking of icudata - sed -i \ - -e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \ - config/mh-linux || die - - # Append doxygen configuration to configure - sed -i \ - -e 's:icudefs.mk:icudefs.mk Doxyfile:' \ - configure.ac || die - - eautoreconf -} - -src_configure() { - append-cxxflags -std=c++14 - - if tc-is-cross-compiler; then - mkdir "${WORKDIR}"/host || die - pushd "${WORKDIR}"/host >/dev/null || die - - CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \ - CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \ - RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \ - "${S}"/configure --disable-renaming --disable-debug \ - --disable-samples --enable-static || die - emake - - popd >/dev/null || die - fi - - multilib-minimal_src_configure -} - -multilib_src_configure() { - local myeconfargs=( - --disable-renaming - --disable-samples - --disable-layoutex - $(use_enable debug) - $(use_enable static-libs static) - $(multilib_native_use_enable examples samples) - ) - - tc-is-cross-compiler && myeconfargs+=( - --with-cross-build="${WORKDIR}"/host - ) - - # work around cross-endian testing failures with LTO #757681 - if tc-is-cross-compiler && is-flagq '-flto*' ; then - myeconfargs+=( --disable-strict ) - fi - - # icu tries to use clang by default - tc-export CC CXX - - # make sure we configure with the same shell as we run icu-config - # with, or ECHO_N, ECHO_T and ECHO_C will be wrongly defined - export CONFIG_SHELL="${EPREFIX}/bin/sh" - # probably have no /bin/sh in prefix-chain - [[ -x ${CONFIG_SHELL} ]] || CONFIG_SHELL="${BASH}" - - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" -} - -multilib_src_compile() { - default - - if multilib_is_native_abi && use doc; then - doxygen -u Doxyfile || die - doxygen Doxyfile || die - fi -} - -multilib_src_test() { - # INTLTEST_OPTS: intltest options - # -e: Exhaustive testing - # -l: Reporting of memory leaks - # -v: Increased verbosity - # IOTEST_OPTS: iotest options - # -e: Exhaustive testing - # -v: Increased verbosity - # CINTLTST_OPTS: cintltst options - # -e: Exhaustive testing - # -v: Increased verbosity - emake -j1 VERBOSE="1" check -} - -multilib_src_install() { - default - - if multilib_is_native_abi && use doc; then - docinto html - dodoc -r doc/html/* - fi -} - -multilib_src_install_all() { - local HTML_DOCS=( ../readme.html ) - einstalldocs -} diff --git a/dev-libs/icu/icu-71.1.ebuild b/dev-libs/icu/icu-71.1-r1.ebuild index b12402f07a43..87911072ee9c 100644 --- a/dev-libs/icu/icu-71.1.ebuild +++ b/dev-libs/icu/icu-71.1-r1.ebuild @@ -17,7 +17,7 @@ S="${WORKDIR}/${PN}/source" LICENSE="BSD" SLOT="0/${PV}" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" IUSE="debug doc examples static-libs test" RESTRICT="!test? ( test )" @@ -36,6 +36,7 @@ PATCHES=( "${FILESDIR}/${PN}-65.1-remove-bashisms.patch" "${FILESDIR}/${PN}-64.2-darwin.patch" "${FILESDIR}/${PN}-68.1-nonunicode.patch" + "${FILESDIR}/${P}-CVE-2022-1638.patch" # bug 843731 ) src_prepare() { @@ -61,6 +62,9 @@ src_prepare() { } src_configure() { + # ICU tries to append -std=c++11 without this, so as of 71.1, + # despite GCC 9+ using c++14 (or gnu++14) and GCC 11+ using gnu++17, + # we still need this. append-cxxflags -std=c++14 if tc-is-cross-compiler; then |