diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-02-29 18:01:47 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-02-29 18:01:47 +0000 |
commit | ceeeb463cc1eef97fd62eaee8bf2196ba04bc384 (patch) | |
tree | 9f47ee47c31a0f13f9496879cd88a1042550aa81 /dev-libs/icu | |
parent | 53cba99042fa967e2a93da9f8db806fe2d035543 (diff) |
gentoo (leap year) resync : 29.02.2020
Diffstat (limited to 'dev-libs/icu')
-rw-r--r-- | dev-libs/icu/Manifest | 4 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-65.1-integer-overflow.patch | 118 | ||||
-rw-r--r-- | dev-libs/icu/icu-65.1-r1.ebuild | 143 | ||||
-rw-r--r-- | dev-libs/icu/icu-65.1.ebuild | 2 |
4 files changed, 265 insertions, 2 deletions
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest index b3080ed6ce79..0a1b131e1621 100644 --- a/dev-libs/icu/Manifest +++ b/dev-libs/icu/Manifest @@ -1,6 +1,8 @@ AUX icu-64.1-data_archive_generation.patch 473 BLAKE2B 88e77149ec92a316d5e534a6aba8808829ebdef16978fc7130bb4fba80f2bcc7886bafe3c944ff83f56cbf5f02860a35cb0a655722ce305e5e6b05dae15d5254 SHA512 3cf34c7ffaa200f841d605f11ee8145d70f2975be2ae5282a6de2fb5caf6bd8ae67e05cf652b0714023087fa145b4e5fdd4e4287dc331334ec347d957674d291 AUX icu-64.2-darwin.patch 2162 BLAKE2B 74682494b903ee1cdcd2025afe36648adef39573754ccb0e0e86b5b7d7f26937c6ea54d655e8482ad9d7a2ccc64b5c8a8640d4e71390b19b64a25bde76b3d63d SHA512 e4e0eb9f953285f4221f2733a3a76c23e9e72127ce3ac0ecc67a46a9e37236dee352f28b7b9befdcae9e2f95297e01a98e0dd177697ee6335145ad5088d2f00f +AUX icu-65.1-integer-overflow.patch 4191 BLAKE2B 3163c1237e4943c2d46b10381cb16ef3f2abbdec218a4908e843e03c874d1998784156f8d9f61a57754b70c8f9b5f48c369bb25366d66a6ca355ef58c68754d8 SHA512 1e141588cd6f3685cd8e0a4c232c95cacd14d02e1fa8ff87c5159432ec01a95c7dd832050c74d6fb51c01cd4fb2291a374b3df6334f509472a8b2d2f990f2bfb AUX icu-65.1-remove-bashisms.patch 4963 BLAKE2B fb781741a7a908638876729d573a73e42b7b3f0f3e692b54799fed0dac006ecb731583d90d849ea06be47259a0a236933fa7a78a96b3a8107ee85f916dc2000a SHA512 67e60068c356ca8d93b137eadeef2562ff7d8f38153babc97edd92a2c38d7113396d63d4a09364dacefc612b4b3ea28872a4f767c4f38d3e725943b32f98c5bc DIST icu4c-65_1-src.tgz 24267934 BLAKE2B 3c62781201c02a2b1027c9b6db4586f8ccdfb339c0765301a381242d5218f3503a1cdbdc1dc9a1a23ffa657096adc4bf7f0b7fe702461f14beba293a7e82e02c SHA512 8f1ef33e1f4abc9a8ee870331c59f01b473d6da1251a19ce403f822f3e3871096f0791855d39c8f20c612fc49cda2c62c06864aa32ddab2dbd186d2b21ce9139 -EBUILD icu-65.1.ebuild 3390 BLAKE2B f7ea8c353e38b2c3d34e753379d27f400299a8bb6bcc35171f99c700601336329831ad8ebd4e45f7656d80e902fbb60da372274048851622b91f6fa9dbc7a9b9 SHA512 05bbc33f707a9f776e69516c8fe170af7459e07f0ffcdcc54fe003f255378cfbb4db3950751570f55d20fe81b11f0677081df9ba8701b85ff7b1e0777fe236aa +EBUILD icu-65.1-r1.ebuild 3460 BLAKE2B 0dd490c745be064f6597a3e5c62557e5c489beaaef4c18a5dd47838a4b5ffb0ce9d24ab67f5eddd29b94a4b29e95585c55ee1e091a4b4c4b7a51c3029efa40be SHA512 1c3441e9e4a2b3ac2ddc53da914526c0a4d4faf39e9ca93a57d5915279e5c5c77c364b769d43b02881e8c13be23483982b5ccb84a67608952be43f899e64b280 +EBUILD icu-65.1.ebuild 3391 BLAKE2B a0cd53e6d1d4ca15a9d8647bb9f1239d3f3e131dddf77f804676f455f6c717ee67bc19b591d2760f2555b27ee291f0ae90662766b01140b2b000c42d0b040c34 SHA512 48e299923ab7b58c8c779dad13ebf142fdcc4aaa1db3d010d979a4ede3055aa428d621714ef9edb8339804d22dac9d6c7380731fb782a9958160f2269d2bc6cc MISC metadata.xml 255 BLAKE2B 9b8486730bea2158e8be5cbbe0552c5460d1b18e2236a68e3f11d85ce4eeb96eb0e746f44a10cb7cdcf1bf498190a512ef42f47852c6843b9a3c937ceabc338d SHA512 ac646e8ac676faf0aac283e4be31c5f2b29e98ccf07327073ed05e688ce696caf639bdfea63e4aed141a90e84c0a86892bc717a52b95cdf1739aaa15240013c3 diff --git a/dev-libs/icu/files/icu-65.1-integer-overflow.patch b/dev-libs/icu/files/icu-65.1-integer-overflow.patch new file mode 100644 index 000000000000..8e76a9f289dd --- /dev/null +++ b/dev-libs/icu/files/icu-65.1-integer-overflow.patch @@ -0,0 +1,118 @@ +From b7d08bc04a4296982fcef8b6b8a354a9e4e7afca Mon Sep 17 00:00:00 2001 +From: Frank Tang <ftang@chromium.org> +Date: Sat, 1 Feb 2020 02:39:04 +0000 +Subject: [PATCH] ICU-20958 Prevent SEGV_MAPERR in append + +See #971 +--- + common/unistr.cpp | 6 ++- + test/intltest/ustrtest.cpp | 62 +++++++++++++++++++++++++ + test/intltest/ustrtest.h | 1 + + 3 files changed, 68 insertions(+), 1 deletion(-) + +diff --git a/common/unistr.cpp b/common/unistr.cpp +index 901bb3358ba..077b4d6ef20 100644 +--- a/common/unistr.cpp ++++ b/common/unistr.cpp +@@ -1563,7 +1563,11 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng + } + + int32_t oldLength = length(); +- int32_t newLength = oldLength + srcLength; ++ int32_t newLength; ++ if (uprv_add32_overflow(oldLength, srcLength, &newLength)) { ++ setToBogus(); ++ return *this; ++ } + + // Check for append onto ourself + const UChar* oldArray = getArrayStart(); +diff --git a/test/intltest/ustrtest.cpp b/test/intltest/ustrtest.cpp +index b6515ea813c..ad38bdf53a3 100644 +--- a/test/intltest/ustrtest.cpp ++++ b/test/intltest/ustrtest.cpp +@@ -67,6 +67,7 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* & + TESTCASE_AUTO(TestWCharPointers); + TESTCASE_AUTO(TestNullPointers); + TESTCASE_AUTO(TestUnicodeStringInsertAppendToSelf); ++ TESTCASE_AUTO(TestLargeAppend); + TESTCASE_AUTO_END; + } + +@@ -2310,3 +2311,64 @@ void UnicodeStringTest::TestUnicodeStringInsertAppendToSelf() { + str.insert(2, sub); + assertEquals("", u"abbcdcde", str); + } ++ ++void UnicodeStringTest::TestLargeAppend() { ++ if(quick) return; ++ ++ IcuTestErrorCode status(*this, "TestLargeAppend"); ++ // Make a large UnicodeString ++ int32_t len = 0xAFFFFFF; ++ UnicodeString str; ++ char16_t *buf = str.getBuffer(len); ++ // A fast way to set buffer to valid Unicode. ++ // 4E4E is a valid unicode character ++ uprv_memset(buf, 0x4e, len * 2); ++ str.releaseBuffer(len); ++ UnicodeString dest; ++ // Append it 16 times ++ // 0xAFFFFFF times 16 is 0xA4FFFFF1, ++ // which is greater than INT32_MAX, which is 0x7FFFFFFF. ++ int64_t total = 0; ++ for (int32_t i = 0; i < 16; i++) { ++ dest.append(str); ++ total += len; ++ if (total <= INT32_MAX) { ++ assertFalse("dest is not bogus", dest.isBogus()); ++ } else { ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } ++ } ++ dest.remove(); ++ total = 0; ++ for (int32_t i = 0; i < 16; i++) { ++ dest.append(str); ++ total += len; ++ if (total + len <= INT32_MAX) { ++ assertFalse("dest is not bogus", dest.isBogus()); ++ } else if (total <= INT32_MAX) { ++ // Check that a string of exactly the maximum size works ++ UnicodeString str2; ++ int32_t remain = INT32_MAX - total; ++ char16_t *buf2 = str2.getBuffer(remain); ++ if (buf2 == nullptr) { ++ // if somehow memory allocation fail, return the test ++ return; ++ } ++ uprv_memset(buf2, 0x4e, remain * 2); ++ str2.releaseBuffer(remain); ++ dest.append(str2); ++ total += remain; ++ assertEquals("When a string of exactly the maximum size works", (int64_t)INT32_MAX, total); ++ assertEquals("When a string of exactly the maximum size works", INT32_MAX, dest.length()); ++ assertFalse("dest is not bogus", dest.isBogus()); ++ ++ // Check that a string size+1 goes bogus ++ str2.truncate(1); ++ dest.append(str2); ++ total++; ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } else { ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } ++ } ++} +diff --git a/test/intltest/ustrtest.h b/test/intltest/ustrtest.h +index 218befdcc68..4a356a92c7a 100644 +--- a/test/intltest/ustrtest.h ++++ b/test/intltest/ustrtest.h +@@ -97,6 +97,7 @@ class UnicodeStringTest: public IntlTest { + void TestWCharPointers(); + void TestNullPointers(); + void TestUnicodeStringInsertAppendToSelf(); ++ void TestLargeAppend(); + }; + + #endif diff --git a/dev-libs/icu/icu-65.1-r1.ebuild b/dev-libs/icu/icu-65.1-r1.ebuild new file mode 100644 index 000000000000..d11f7406c339 --- /dev/null +++ b/dev-libs/icu/icu-65.1-r1.ebuild @@ -0,0 +1,143 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7} ) +inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs + +DESCRIPTION="International Components for Unicode" +HOMEPAGE="http://site.icu-project.org/" +SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz" + +LICENSE="BSD" + +SLOT="0/${PV}" + +KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh sparc x86 ~ppc-aix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" +IUSE="debug doc examples static-libs" + +BDEPEND="${PYTHON_DEPS} + virtual/pkgconfig + doc? ( app-doc/doxygen[dot] ) +" + +S="${WORKDIR}/${PN}/source" + +MULTILIB_CHOST_TOOLS=( + /usr/bin/icu-config +) + +PATCHES=( + "${FILESDIR}/${PN}-65.1-remove-bashisms.patch" + "${FILESDIR}/${PN}-64.2-darwin.patch" + "${FILESDIR}/${PN}-64.1-data_archive_generation.patch" + "${FILESDIR}/${PN}-65.1-integer-overflow.patch" # bug 710758 +) + +src_prepare() { + default + + local variable + + # 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 + ) + + # 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() { + einstalldocs + docinto html + dodoc ../readme.html +} diff --git a/dev-libs/icu/icu-65.1.ebuild b/dev-libs/icu/icu-65.1.ebuild index 7a70b1dd021d..7897bd2cbf43 100644 --- a/dev-libs/icu/icu-65.1.ebuild +++ b/dev-libs/icu/icu-65.1.ebuild @@ -7,7 +7,7 @@ PYTHON_COMPAT=( python3_{6,7} ) inherit autotools flag-o-matic multilib-minimal python-any-r1 toolchain-funcs DESCRIPTION="International Components for Unicode" -HOMEPAGE="http://www.icu-project.org/" +HOMEPAGE="http://site.icu-project.org/" SRC_URI="https://github.com/unicode-org/icu/releases/download/release-${PV//./-}/icu4c-${PV//./_}-src.tgz" LICENSE="BSD" |