summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2022-12-02 19:53:39 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2022-12-03 11:27:20 +0100
commita6ea6ee7a987637bfba2c0330aa5f03f7c1f2012 (patch)
treee5d3e49e00b0c68327d0f0bee109e9cae77e4124 /dev-libs/icu
parentapp-text/poppler: drop 22.09.0, 22.10.0 (diff)
downloadgentoo-a6ea6ee7a987637bfba2c0330aa5f03f7c1f2012.tar.gz
gentoo-a6ea6ee7a987637bfba2c0330aa5f03f7c1f2012.tar.bz2
gentoo-a6ea6ee7a987637bfba2c0330aa5f03f7c1f2012.zip
dev-libs/icu: drop 71.1-r1
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-libs/icu')
-rw-r--r--dev-libs/icu/Manifest2
-rw-r--r--dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch202
-rw-r--r--dev-libs/icu/icu-71.1-r1.ebuild156
3 files changed, 0 insertions, 360 deletions
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest
index 1fa70e2624e9..cdf78708ebe4 100644
--- a/dev-libs/icu/Manifest
+++ b/dev-libs/icu/Manifest
@@ -1,4 +1,2 @@
-DIST icu4c-71_1-src.tgz 25701340 BLAKE2B 182972d87fe5b69b5e08c39ab9bb0ac7ffc7b36530168b3548faa051cce2b73b9f1c1d23198a4b1c655442155e369da76929e4f54fe4e32265160363428d4916 SHA512 1fd2a20aef48369d1f06e2bb74584877b8ad0eb529320b976264ec2db87420bae242715795f372dbc513ea80047bc49077a064e78205cd5e8b33d746fd2a2912
-DIST icu4c-71_1-src.tgz.asc 659 BLAKE2B ac281e0a9b94bf6bfddee2dd5dc7553836aa50ae84f55478a662d0cd1e116a944de92dd5fd701164d62fb5b8e8effcdb3456a151a6b198d603e2324ccd76e334 SHA512 3371e14f3959defa7fb8d3eb0308084646ed553169b7a845bff89f9a8c1054ef5bee45c26c1834a84cab38fa87710f1585e6c5787be1fe2df356eb5c2ba20aae
DIST icu4c-72_1-src.tgz 26303933 BLAKE2B 0eeaf6cf61c98ab93f2c7715607209b7741dcb806a98749a7172d004210b98c3528f84ca3c53400f7ed06ed90c6f6f3f55df3fead033c66c7e948697907343f9 SHA512 848c341b37c0ff077e34a95d92c6200d5aaddd0ee5e06134101a74e04deb08256a5e817c8aefab020986abe810b7827dd7b2169a60dacd250c298870518dcae8
DIST icu4c-72_1-src.tgz.asc 659 BLAKE2B 1d28948ee577ed9fe694c1e151da124df3567d81352465c76e8910848bb780e9fc9505c4a3795fde8f2f6e8f28a631f887fdecdc536286341b2b23ce423a7cbb SHA512 8b5e841a3baa317a13cadf7deb3582a80cfab8e5bdae6bd04612ee7be3006d9acf07b015de01a94990fa350109a3c11e547482e4cb4ca986161cc701a8cd427b
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
deleted file mode 100644
index 216ed7894473..000000000000
--- a/dev-libs/icu/files/icu-71.1-CVE-2022-1638.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-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-71.1-r1.ebuild b/dev-libs/icu/icu-71.1-r1.ebuild
deleted file mode 100644
index b611c9d0a72c..000000000000
--- a/dev-libs/icu/icu-71.1-r1.ebuild
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Please bump with dev-libs/icu-layoutex
-
-PYTHON_COMPAT=( python3_{8..11} )
-VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/icu.asc
-inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs verify-sig
-
-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"
-SRC_URI+=" verify-sig? ( https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz.asc )"
-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"
-IUSE="debug doc examples static-libs test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="${PYTHON_DEPS}
- sys-devel/autoconf-archive
- virtual/pkgconfig
- doc? ( app-doc/doxygen[dot] )
- verify-sig? ( sec-keys/openpgp-keys-icu )
-"
-
-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"
- "${FILESDIR}/${P}-CVE-2022-1638.patch" # bug 843731
-)
-
-src_prepare() {
- default
-
- # Disable renaming as it assumes stable ABI and that consumers
- # won't use unofficial APIs. We need this despite the configure argument.
- 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() {
- MAKEOPTS+=" VERBOSE=1"
-
- # 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
- 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)
- $(use_enable test tests)
- $(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 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
-}