diff options
author | Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org> | 2010-04-16 00:04:52 +0000 |
---|---|---|
committer | Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org> | 2010-04-16 00:04:52 +0000 |
commit | 8e7d4d568bb821ee61a359de59da6dd982573db5 (patch) | |
tree | f9391ba5767631d4e39c5422c893ed2ffb6a1aca /dev-libs/icu | |
parent | Set QA_DT_NEEDED (bug #215729). Install libicutest (bug #310297). (diff) | |
download | gentoo-2-8e7d4d568bb821ee61a359de59da6dd982573db5.tar.gz gentoo-2-8e7d4d568bb821ee61a359de59da6dd982573db5.tar.bz2 gentoo-2-8e7d4d568bb821ee61a359de59da6dd982573db5.zip |
Delete older ebuilds.
Diffstat (limited to 'dev-libs/icu')
-rw-r--r-- | dev-libs/icu/Manifest | 9 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-3.6-regexp-CVE-2007-4770+4771.diff | 309 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-3.8-regexp-CVE-2007-4770+4771.diff | 305 | ||||
-rw-r--r-- | dev-libs/icu/files/icu-3.8-setBreakType-public.diff | 24 | ||||
-rw-r--r-- | dev-libs/icu/icu-3.6-r2.ebuild | 35 | ||||
-rw-r--r-- | dev-libs/icu/icu-3.8.1-r1.ebuild | 86 |
6 files changed, 0 insertions, 768 deletions
diff --git a/dev-libs/icu/Manifest b/dev-libs/icu/Manifest index 4df84495e208..e31916cf464a 100644 --- a/dev-libs/icu/Manifest +++ b/dev-libs/icu/Manifest @@ -1,25 +1,16 @@ -AUX icu-3.6-regexp-CVE-2007-4770+4771.diff 10813 RMD160 e28e0704389087b49263b93781cfaf8564ba7bd0 SHA1 42da32eb2aaa9ffed8b67d88268d8b144186cbb6 SHA256 ae908b683114b4874a84abdee963bcf6ff4dd65f9ba045b1843dffa1df7ac02f -AUX icu-3.8-regexp-CVE-2007-4770+4771.diff 10839 RMD160 efeef3970293df08a430e5c797d0b9c3a8198dfd SHA1 aceeabc01355360866cb17811f4ad7e709498b80 SHA256 ec22413f8544c399241b9a7ca6d9c92c5414701ec1d7f536fdb8e6fe35717916 -AUX icu-3.8-setBreakType-public.diff 900 RMD160 ba2d421389829d25b04ae6debc8ad16f2f183ddf SHA1 692f373ea8e52189b7dfa60dd34805411488ef2b SHA256 b3f2b1651ae47ef9c0ba72712dc88d377ac92e6d3f1f621316aead217f4ee325 AUX icu-4.0.1-TestDisplayNamesMeta.patch 8259 RMD160 4eb64876eee0ff21577f8330326ba96010545cc1 SHA1 d8fe22be87fbb99f8c1a0bbb9d94bc2d93ca083a SHA256 cfcedc486f4c530e43b5fffacf4068f76d026ab73dd4aa1dff253fc87c2e462c AUX icu-4.0.1-fix_parallel_building.patch 145 RMD160 d7e74631383b01a7cd9d18f9fda2949e1b3ec198 SHA1 5edcb46b7730b11aeaf5ed2e8e968e588eb1d492 SHA256 244bee4fcabe5c1bcf95af2d9a01d87b2de27407e662f2c1663c5ce15ac8a561 AUX icu-4.2.1-fix_misoptimizations.patch 792 RMD160 e2057694f0e29ab4cd121811e1dcd727252589ef SHA1 805e3f9f2396d49d7212d1ef6e76a211f3c9e222 SHA256 b464091bc0f0f018b7597400851f628b1236938e090a9b3fe49c0baa45d2b60f AUX icu-4.2.1-pkgdata-build_data_without_assembly.patch 378 RMD160 37f147df705c906f9af47b4c865fe7c865952313 SHA1 a5228b4587915d3ff89d81bad1ba0ae0566dd2e4 SHA256 7ee4dafc261b569229e86553248da738a8bb8ab758dd0c557e69eb891c667e5c AUX icu-4.2.1-pkgdata.patch 4823 RMD160 3ab8ac44294ca6133429fdfbf962ac7b73fdfe72 SHA1 55c618ac12906b3778b129b83cc1db0d153accd3 SHA256 f8dd5dcd0f2a01e6b5859e05cc21bb8a3469b940a918903fc086c58643ecbd55 AUX icu-4.4-install_libicutest.patch 1626 RMD160 7b96c085fc73a0477613d49484584acef53959e4 SHA1 9c869f8ffcead44193c2678869e6967e983ccd9e SHA256 c734852b18b0b70f66a6c5975354b5f1ef8ab2f5172e9f096e4cc4fdf15b0695 -DIST icu-3_8-userguide.zip 2611858 RMD160 8fa028c73aedb9ef5fe2ff895469088ee0a4b5af SHA1 de16e72a8f53da466223ea34fb7385fe52b06736 SHA256 c61a3c2c923e08b5e0ee544b5e417058e4566878f8144a745924c5693ca160bb DIST icu-4_0-userguide.zip 2201832 RMD160 efbde385d89be4f91f4945c963d3abc118121f50 SHA1 a4c7bbe4ce0b99bf907b598620aa58daf51d6883 SHA256 db9accfdfdb6536881513d8d0c09ff53cee0340804f0f06ed4fb303cceed1092 -DIST icu4c-3_6-src.tgz 10183358 RMD160 b227ac9ff6019362bc4d01c18433869b0e0ff1c2 SHA1 b580c2802e74eb6af7e5e19b05c7d7c5d8c623f9 SHA256 5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041 -DIST icu4c-3_8-docs.zip 4001018 RMD160 927f4466758722e958b90a2bae873b11da222e88 SHA1 94b47b5dd88bce15dab608719efbbd405d15e912 SHA256 6d920a2cd7b54d8ccb2ccc417f0a0c0c55a615cf461bffbd4d5103c0182835d6 -DIST icu4c-3_8_1-src.tgz 10998841 RMD160 d297330ff0eb91bff5ac91e59188f1751f899032 SHA1 c2b933aee6741c28956f1b87dc514dee49b949aa SHA256 16dda09dff3f770e629313a4c50a82fee88baf87d89a3bb2a28806be07766cee DIST icu4c-4_0-docs.zip 4366805 RMD160 ce81012d86ff609b443b710f822f107d629a75ed SHA1 9a7c0a0c63adf02fb156b076d76acaa7dc59a15b SHA256 d99ffa2356e45620b49d71c43a21f830f92d3cf7eb5aa0b02b23580c2289bed6 DIST icu4c-4_0_1-src.tgz 12356471 RMD160 e40e7ffddd3134a34fe7e7bc98d776c5b67b637c SHA1 65a65e9cd5670e113031def9448f65fb8f84f47a SHA256 fe4d33cc7393c355df7b13080e1c3717ec1acac2f8cfe452b691f33c5f467259 DIST icu4c-4_2-docs.zip 4767072 RMD160 0ef1c2ef6f649924fa9ee603a48ae664965b0eec SHA1 703760245543aa64fa92084d77bba4f019bab0ae SHA256 2310cc74088ea715b083e24ff75d9d2c71533712b190eaccc901c6cb6bfd196f DIST icu4c-4_2_1-src.tgz 13161131 RMD160 1b94317a117c40d564ec047cff9cb2de2de3bd9e SHA1 872a77fca51325ab0b335cbbadc1739576078434 SHA256 814de31e1413df945cdd34939b424c4cf7a94d1c481f2d44c99c8ca52b288063 DIST icu4c-4_4-docs.zip 4743886 RMD160 6321fdc500d018358578249d32e84cfdc3f17db7 SHA1 fc76c72f8fa8954e6348fa2a34530cbc44e1491d SHA256 d7b21930173f9e4a9325bb7056081183c9fb395ca4eb259e9f5ea95239e53418 DIST icu4c-4_4-src.tgz 16428350 RMD160 ef777ba1324cced2b4dbd1438ed7543eaf115d63 SHA1 6f01fe700e4ba035888c10ec7e964e1772c7f626 SHA256 96caab011e784b004ce5867665fe711402a53eb6d19a8817f582c819711f93f3 -EBUILD icu-3.6-r2.ebuild 951 RMD160 9bbf921a1e5cdf0c14d3cbc6319f15c99c9fd255 SHA1 88de3f6de23f0a3a3d55d158a7f3f880aee23f4b SHA256 948a2a6ef61fb2669fc38f57bfb10773e9835523446f7356259058a0cdf6b086 -EBUILD icu-3.8.1-r1.ebuild 2305 RMD160 6b6537758e8ff7038e362b02d412afb3d4e267b4 SHA1 1d37dd15f7c899010807726bf25a723776f80ba1 SHA256 a766cd6d4950c0fe44126c53a8fa14704a7293cf0b1120b0ba9611247b84e6e0 EBUILD icu-4.0.1.ebuild 2172 RMD160 bf0956acfe882128b7be0508b473cc45d2fa5827 SHA1 90f225176c33db740be4f0a7eade80bf9a3b5f1c SHA256 89ec96ebcbe1520c215887b127c3b1b6cf71a0d68af43f975f086cc3e6257a3a EBUILD icu-4.2.1.ebuild 2092 RMD160 1bcd9e0b51536bd5726d8b7fbd7065cdd81a37ba SHA1 18ebdeb5a06bc3087bd25984c2f930a015d71d09 SHA256 63d07ed11f3009af74eb0f266b7df17f6f757eb7e40d5512b47100e48a6dd60d EBUILD icu-4.4-r1.ebuild 1906 RMD160 317ae46be84eebc8af1e747b7d96586921add441 SHA1 ee0e032d0ee4c51fa9740acbd6ca96835671a3d9 SHA256 f3a007e0fdf560d9a70a7f49c602ffc0c5b4c70ff4b565123a7d568017854d94 diff --git a/dev-libs/icu/files/icu-3.6-regexp-CVE-2007-4770+4771.diff b/dev-libs/icu/files/icu-3.6-regexp-CVE-2007-4770+4771.diff deleted file mode 100644 index 07979a453122..000000000000 --- a/dev-libs/icu/files/icu-3.6-regexp-CVE-2007-4770+4771.diff +++ /dev/null @@ -1,309 +0,0 @@ -# borrowed from redhat -- https://bugzilla.redhat.com/show_bug.cgi?id=429023 - -diff -ru icu.orig/source/common/uvectr32.cpp icu/source/common/uvectr32.cpp ---- icu.orig/source/common/uvectr32.cpp 2003-08-27 02:01:30.000000000 +0100 -+++ icu/source/common/uvectr32.cpp 2008-01-22 08:37:06.000000000 +0000 -@@ -1,6 +1,6 @@ - /* - ****************************************************************************** --* Copyright (C) 1999-2003, International Business Machines Corporation and * -+* Copyright (C) 1999-2008, International Business Machines Corporation and * - * others. All Rights Reserved. * - ****************************************************************************** - * Date Name Description -@@ -26,6 +26,7 @@ - UVector32::UVector32(UErrorCode &status) : - count(0), - capacity(0), -+ maxCapacity(0), - elements(NULL) - { - _init(DEFUALT_CAPACITY, status); -@@ -34,6 +35,7 @@ - UVector32::UVector32(int32_t initialCapacity, UErrorCode &status) : - count(0), - capacity(0), -+ maxCapacity(0), - elements(0) - { - _init(initialCapacity, status); -@@ -46,6 +48,9 @@ - if (initialCapacity < 1) { - initialCapacity = DEFUALT_CAPACITY; - } -+ if (maxCapacity>0 && maxCapacity<initialCapacity) { -+ initialCapacity = maxCapacity; -+ } - elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity); - if (elements == 0) { - status = U_MEMORY_ALLOCATION_ERROR; -@@ -189,21 +194,35 @@ - UBool UVector32::expandCapacity(int32_t minimumCapacity, UErrorCode &status) { - if (capacity >= minimumCapacity) { - return TRUE; -- } else { -- int32_t newCap = capacity * 2; -- if (newCap < minimumCapacity) { -- newCap = minimumCapacity; -- } -- int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); -- if (newElems == 0) { -- status = U_MEMORY_ALLOCATION_ERROR; -- return FALSE; -- } -- uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); -- uprv_free(elements); -- elements = newElems; -- capacity = newCap; -- return TRUE; -+ } -+ if (maxCapacity>0 && minimumCapacity>maxCapacity) { -+ status = U_BUFFER_OVERFLOW_ERROR; -+ return FALSE; -+ } -+ int32_t newCap = capacity * 2; -+ if (newCap < minimumCapacity) { -+ newCap = minimumCapacity; -+ } -+ if (maxCapacity > 0 && newCap > maxCapacity) { -+ newCap = maxCapacity; -+ } -+ int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); -+ if (newElems == 0) { -+ status = U_MEMORY_ALLOCATION_ERROR; -+ return FALSE; -+ } -+ uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); -+ uprv_free(elements); -+ elements = newElems; -+ capacity = newCap; -+ return TRUE; -+} -+ -+void UVector32::setMaxCapacity(int32_t limit) { -+ U_ASSERT(limit >= 0); -+ maxCapacity = limit; -+ if (maxCapacity < 0) { -+ maxCapacity = 0; - } - } - -diff -ru icu.orig/source/common/uvectr32.h icu/source/common/uvectr32.h ---- icu.orig/source/common/uvectr32.h 2006-01-18 03:52:04.000000000 +0000 -+++ icu/source/common/uvectr32.h 2008-01-22 08:37:07.000000000 +0000 -@@ -1,6 +1,6 @@ - /* - ********************************************************************** --* Copyright (C) 1999-2006, International Business Machines -+* Copyright (C) 1999-2008, International Business Machines - * Corporation and others. All Rights Reserved. - ********************************************************************** - */ -@@ -61,6 +61,8 @@ - int32_t count; - - int32_t capacity; -+ -+ int32_t maxCapacity; // Limit beyond which capacity is not permitted to grow. - - int32_t* elements; - -@@ -162,6 +164,14 @@ - int32_t *getBuffer() const; - - /** -+ * Set the maximum allowed buffer capacity for this vector/stack. -+ * Default with no limit set is unlimited, go until malloc() fails. -+ * A Limit of zero means unlimited capacity. -+ * Units are vector elements (32 bits each), not bytes. -+ */ -+ void setMaxCapacity(int32_t limit); -+ -+ /** - * ICU "poor man's RTTI", returns a UClassID for this class. - */ - static UClassID U_EXPORT2 getStaticClassID(); -@@ -221,7 +231,9 @@ - } - - inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) { -- ensureCapacity(count+size, status); -+ if (ensureCapacity(count+size, status) == FALSE) { -+ return NULL; -+ } - int32_t *rp = elements+count; - count += size; - return rp; -diff -ru icu.orig/source/i18n/regexcmp.cpp icu/source/i18n/regexcmp.cpp ---- icu.orig/source/i18n/regexcmp.cpp 2006-02-02 04:37:14.000000000 +0000 -+++ icu/source/i18n/regexcmp.cpp 2008-01-22 08:37:06.000000000 +0000 -@@ -1187,14 +1187,17 @@ - // Because capture groups can be forward-referenced by back-references, - // we fill the operand with the capture group number. At the end - // of compilation, it will be changed to the variable's location. -- U_ASSERT(groupNum > 0); -- int32_t op; -- if (fModeFlags & UREGEX_CASE_INSENSITIVE) { -- op = URX_BUILD(URX_BACKREF_I, groupNum); -+ if (groupNum < 1) { -+ error(U_REGEX_INVALID_BACK_REF); - } else { -- op = URX_BUILD(URX_BACKREF, groupNum); -+ int32_t op; -+ if (fModeFlags & UREGEX_CASE_INSENSITIVE) { -+ op = URX_BUILD(URX_BACKREF_I, groupNum); -+ } else { -+ op = URX_BUILD(URX_BACKREF, groupNum); -+ } -+ fRXPat->fCompiledPat->addElement(op, *fStatus); - } -- fRXPat->fCompiledPat->addElement(op, *fStatus); - } - break; - -diff -ru icu.orig/source/i18n/rematch.cpp icu/source/i18n/rematch.cpp ---- icu.orig/source/i18n/rematch.cpp 2005-08-25 19:02:20.000000000 +0100 -+++ icu/source/i18n/rematch.cpp 2008-01-22 08:37:44.000000000 +0000 -@@ -30,6 +30,15 @@ - - U_NAMESPACE_BEGIN - -+// Limit the size of the back track stack, to avoid system failures caused -+// by heap exhaustion. Units are in 32 bit words, not bytes. -+// This value puts ICU's limits higher than most other regexp implementations, -+// which use recursion rather than the heap, and take more storage per -+// backtrack point. -+// This constant is _temporary_. Proper API to control the value will added. -+// -+static const int32_t BACKTRACK_STACK_CAPACITY = 8000000; -+ - //----------------------------------------------------------------------------- - // - // Constructor and Destructor -@@ -53,6 +62,8 @@ - } - if (fStack == NULL || fData == NULL) { - fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - - reset(*RegexStaticSets::gStaticSets->fEmptyString); -@@ -78,6 +89,8 @@ - } - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(input); - } -@@ -102,6 +115,8 @@ - } - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(*RegexStaticSets::gStaticSets->fEmptyString); - } -@@ -1015,6 +1030,14 @@ - inline REStackFrame *RegexMatcher::StateSave(REStackFrame *fp, int32_t savePatIdx, int32_t frameSize, UErrorCode &status) { - // push storage for a new frame. - int32_t *newFP = fStack->reserveBlock(frameSize, status); -+ if (newFP == NULL) { -+ // Heap allocation error on attempted stack expansion. -+ // We need to return a writable stack frame, so just return the -+ // previous frame. The match operation will stop quickly -+ // becuase of the error status, after which the frame will never -+ // be looked at again. -+ return fp; -+ } - fp = (REStackFrame *)(newFP - frameSize); // in case of realloc of stack. - - // New stack frame = copy of old top frame. -@@ -1030,8 +1053,8 @@ - fp->fPatIdx = savePatIdx; - return (REStackFrame *)newFP; - } -- -- -+ -+ - //-------------------------------------------------------------------------------- - // - // MatchAt This is the actual matching engine. -@@ -2262,6 +2285,7 @@ - } - - if (U_FAILURE(status)) { -+ isMatch = FALSE; - break; - } - } -diff -ru icu.orig/source/test/intltest/regextst.cpp icu/source/test/intltest/regextst.cpp ---- icu.orig/source/test/intltest/regextst.cpp 2005-07-05 19:39:00.000000000 +0100 -+++ icu/source/test/intltest/regextst.cpp 2008-01-22 08:38:21.000000000 +0000 -@@ -66,6 +66,10 @@ - case 6: name = "PerlTests"; - if (exec) PerlTests(); - break; -+ case 7: name = "Bug 6149"; -+ if (exec) Bug6149(); -+ break; -+ - - - default: name = ""; -@@ -1637,6 +1641,13 @@ - // UnicodeSet containing a string - REGEX_ERR("abc[{def}]xyz", 1, 10, U_REGEX_SET_CONTAINS_STRING); - -+ -+ // Invalid Back Reference \0 -+ // For ICU 3.8 and earlier -+ // For ICU versions newer than 3.8, \0 introduces an octal escape. -+ // -+ REGEX_ERR("(ab)\\0", 1, 6, U_REGEX_INVALID_BACK_REF); -+ - } - - -@@ -2119,6 +2130,26 @@ - } - - -+//-------------------------------------------------------------- -+// -+// Bug6149 Verify limits to heap expansion for backtrack stack. -+// Use this pattern, -+// "(a?){1,}" -+// The zero-length match will repeat forever. -+// (That this goes into a loop is another bug) -+// -+//--------------------------------------------------------------- -+void RegexTest::Bug6149() { -+ UnicodeString pattern("(a?){1,}"); -+ UnicodeString s("xyz"); -+ uint32_t flags = 0; -+ UErrorCode status = U_ZERO_ERROR; -+ -+ RegexMatcher matcher(pattern, s, flags, status); -+ UBool result = false; -+ REGEX_ASSERT_FAIL(result=matcher.matches(status), U_BUFFER_OVERFLOW_ERROR); -+ REGEX_ASSERT(result == FALSE); -+ } - - #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ - -diff -ru icu.orig/source/test/intltest/regextst.h icu/source/test/intltest/regextst.h ---- icu.orig/source/test/intltest/regextst.h 2003-12-03 06:58:28.000000000 +0000 -+++ icu/source/test/intltest/regextst.h 2008-01-22 08:37:06.000000000 +0000 -@@ -30,6 +30,7 @@ - virtual void Extended(); - virtual void Errors(); - virtual void PerlTests(); -+ virtual void Bug6149(); - - // The following functions are internal to the regexp tests. - virtual UBool doRegexLMTest(const char *pat, const char *text, UBool looking, UBool match, int line); diff --git a/dev-libs/icu/files/icu-3.8-regexp-CVE-2007-4770+4771.diff b/dev-libs/icu/files/icu-3.8-regexp-CVE-2007-4770+4771.diff deleted file mode 100644 index 545540a4cfc7..000000000000 --- a/dev-libs/icu/files/icu-3.8-regexp-CVE-2007-4770+4771.diff +++ /dev/null @@ -1,305 +0,0 @@ -Index: /icu/branches/maint/maint-3-8/source/i18n/regexcmp.cpp -=================================================================== ---- i18n/regexcmp.cpp (revision 21805) -+++ i18n/regexcmp.cpp (revision 23292) -@@ -3,5 +3,5 @@ - // file: regexcmp.cpp - // --// Copyright (C) 2002-2007 International Business Machines Corporation and others. -+// Copyright (C) 2002-2008 International Business Machines Corporation and others. - // All Rights Reserved. - // -@@ -1187,12 +1187,15 @@ - // we fill the operand with the capture group number. At the end - // of compilation, it will be changed to the variable's location. -- U_ASSERT(groupNum > 0); -- int32_t op; -- if (fModeFlags & UREGEX_CASE_INSENSITIVE) { -- op = URX_BUILD(URX_BACKREF_I, groupNum); -+ if (groupNum < 1) { -+ error(U_REGEX_INVALID_BACK_REF); - } else { -- op = URX_BUILD(URX_BACKREF, groupNum); -- } -- fRXPat->fCompiledPat->addElement(op, *fStatus); -+ int32_t op; -+ if (fModeFlags & UREGEX_CASE_INSENSITIVE) { -+ op = URX_BUILD(URX_BACKREF_I, groupNum); -+ } else { -+ op = URX_BUILD(URX_BACKREF, groupNum); -+ } -+ fRXPat->fCompiledPat->addElement(op, *fStatus); -+ } - } - break; -Index: /icu/branches/maint/maint-3-8/source/i18n/rematch.cpp -=================================================================== ---- i18n/rematch.cpp (revision 21973) -+++ i18n/rematch.cpp (revision 23292) -@@ -1,5 +1,5 @@ - /* - ************************************************************************** --* Copyright (C) 2002-2007 International Business Machines Corporation * -+* Copyright (C) 2002-2008 International Business Machines Corporation * - * and others. All rights reserved. * - ************************************************************************** -@@ -30,4 +30,13 @@ - - U_NAMESPACE_BEGIN -+ -+// Limit the size of the back track stack, to avoid system failures caused -+// by heap exhaustion. Units are in 32 bit words, not bytes. -+// This value puts ICU's limits higher than most other regexp implementations, -+// which use recursion rather than the heap, and take more storage per -+// backtrack point. -+// This constant is _temporary_. Proper API to control the value will added. -+// -+static const int32_t BACKTRACK_STACK_CAPACITY = 8000000; - - //----------------------------------------------------------------------------- -@@ -54,6 +63,7 @@ - if (fStack == NULL || fData == NULL) { - fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; -- } -- -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); -+ } - reset(RegexStaticSets::gStaticSets->fEmptyString); - } -@@ -79,4 +89,6 @@ - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(input); -@@ -103,4 +115,6 @@ - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(RegexStaticSets::gStaticSets->fEmptyString); -@@ -1015,4 +1029,12 @@ - // push storage for a new frame. - int32_t *newFP = fStack->reserveBlock(frameSize, status); -+ if (newFP == NULL) { -+ // Heap allocation error on attempted stack expansion. -+ // We need to return a writable stack frame, so just return the -+ // previous frame. The match operation will stop quickly -+ // becuase of the error status, after which the frame will never -+ // be looked at again. -+ return fp; -+ } - fp = (REStackFrame *)(newFP - frameSize); // in case of realloc of stack. - -@@ -1030,6 +1052,6 @@ - return (REStackFrame *)newFP; - } -- -- -+ -+ - //-------------------------------------------------------------------------------- - // -@@ -2262,4 +2284,5 @@ - - if (U_FAILURE(status)) { -+ isMatch = FALSE; - break; - } -Index: /icu/branches/maint/maint-3-8/source/test/intltest/regextst.h -=================================================================== ---- test/intltest/regextst.h (revision 22001) -+++ test/intltest/regextst.h (revision 23292) -@@ -1,5 +1,5 @@ - /******************************************************************** - * COPYRIGHT: -- * Copyright (c) 2002-2007, International Business Machines Corporation and -+ * Copyright (c) 2002-2008, International Business Machines Corporation and - * others. All Rights Reserved. - ********************************************************************/ -@@ -31,4 +31,5 @@ - virtual void Errors(); - virtual void PerlTests(); -+ virtual void Bug6149(); - - // The following functions are internal to the regexp tests. -Index: /icu/branches/maint/maint-3-8/source/test/intltest/regextst.cpp -=================================================================== ---- test/intltest/regextst.cpp (revision 22057) -+++ test/intltest/regextst.cpp (revision 23292) -@@ -1,5 +1,5 @@ - /******************************************************************** - * COPYRIGHT: -- * Copyright (c) 2002-2007, International Business Machines Corporation and -+ * Copyright (c) 2002-2008, International Business Machines Corporation and - * others. All Rights Reserved. - ********************************************************************/ -@@ -67,4 +67,8 @@ - if (exec) PerlTests(); - break; -+ case 7: name = "Bug 6149"; -+ if (exec) Bug6149(); -+ break; -+ - - -@@ -1640,4 +1644,10 @@ - // Ticket 5389 - REGEX_ERR("*c", 1, 1, U_REGEX_RULE_SYNTAX); -+ -+ // Invalid Back Reference \0 -+ // For ICU 3.8 and earlier -+ // For ICU versions newer than 3.8, \0 introduces an octal escape. -+ // -+ REGEX_ERR("(ab)\\0", 1, 6, U_REGEX_INVALID_BACK_REF); - - } -@@ -2123,4 +2133,24 @@ - - -+//-------------------------------------------------------------- -+// -+// Bug6149 Verify limits to heap expansion for backtrack stack. -+// Use this pattern, -+// "(a?){1,}" -+// The zero-length match will repeat forever. -+// (That this goes into a loop is another bug) -+// -+//--------------------------------------------------------------- -+void RegexTest::Bug6149() { -+ UnicodeString pattern("(a?){1,}"); -+ UnicodeString s("xyz"); -+ uint32_t flags = 0; -+ UErrorCode status = U_ZERO_ERROR; -+ -+ RegexMatcher matcher(pattern, s, flags, status); -+ UBool result = false; -+ REGEX_ASSERT_FAIL(result=matcher.matches(status), U_BUFFER_OVERFLOW_ERROR); -+ REGEX_ASSERT(result == FALSE); -+ } - - #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ -Index: /icu/branches/maint/maint-3-8/source/common/uvectr32.cpp -=================================================================== ---- common/uvectr32.cpp (revision 12958) -+++ common/uvectr32.cpp (revision 23292) -@@ -1,5 +1,5 @@ - /* - ****************************************************************************** --* Copyright (C) 1999-2003, International Business Machines Corporation and * -+* Copyright (C) 1999-2008, International Business Machines Corporation and * - * others. All Rights Reserved. * - ****************************************************************************** -@@ -27,4 +27,5 @@ - count(0), - capacity(0), -+ maxCapacity(0), - elements(NULL) - { -@@ -35,4 +36,5 @@ - count(0), - capacity(0), -+ maxCapacity(0), - elements(0) - { -@@ -46,4 +48,7 @@ - if (initialCapacity < 1) { - initialCapacity = DEFUALT_CAPACITY; -+ } -+ if (maxCapacity>0 && maxCapacity<initialCapacity) { -+ initialCapacity = maxCapacity; - } - elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity); -@@ -190,19 +195,33 @@ - if (capacity >= minimumCapacity) { - return TRUE; -- } else { -- int32_t newCap = capacity * 2; -- if (newCap < minimumCapacity) { -- newCap = minimumCapacity; -- } -- int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); -- if (newElems == 0) { -- status = U_MEMORY_ALLOCATION_ERROR; -- return FALSE; -- } -- uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); -- uprv_free(elements); -- elements = newElems; -- capacity = newCap; -- return TRUE; -+ } -+ if (maxCapacity>0 && minimumCapacity>maxCapacity) { -+ status = U_BUFFER_OVERFLOW_ERROR; -+ return FALSE; -+ } -+ int32_t newCap = capacity * 2; -+ if (newCap < minimumCapacity) { -+ newCap = minimumCapacity; -+ } -+ if (maxCapacity > 0 && newCap > maxCapacity) { -+ newCap = maxCapacity; -+ } -+ int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); -+ if (newElems == 0) { -+ status = U_MEMORY_ALLOCATION_ERROR; -+ return FALSE; -+ } -+ uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); -+ uprv_free(elements); -+ elements = newElems; -+ capacity = newCap; -+ return TRUE; -+} -+ -+void UVector32::setMaxCapacity(int32_t limit) { -+ U_ASSERT(limit >= 0); -+ maxCapacity = limit; -+ if (maxCapacity < 0) { -+ maxCapacity = 0; - } - } -Index: /icu/branches/maint/maint-3-8/source/common/uvectr32.h -=================================================================== ---- common/uvectr32.h (revision 19000) -+++ common/uvectr32.h (revision 23292) -@@ -1,5 +1,5 @@ - /* - ********************************************************************** --* Copyright (C) 1999-2006, International Business Machines -+* Copyright (C) 1999-2008, International Business Machines - * Corporation and others. All Rights Reserved. - ********************************************************************** -@@ -62,4 +62,6 @@ - - int32_t capacity; -+ -+ int32_t maxCapacity; // Limit beyond which capacity is not permitted to grow. - - int32_t* elements; -@@ -161,4 +163,12 @@ - */ - int32_t *getBuffer() const; -+ -+ /** -+ * Set the maximum allowed buffer capacity for this vector/stack. -+ * Default with no limit set is unlimited, go until malloc() fails. -+ * A Limit of zero means unlimited capacity. -+ * Units are vector elements (32 bits each), not bytes. -+ */ -+ void setMaxCapacity(int32_t limit); - - /** -@@ -222,5 +232,7 @@ - - inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) { -- ensureCapacity(count+size, status); -+ if (ensureCapacity(count+size, status) == FALSE) { -+ return NULL; -+ } - int32_t *rp = elements+count; - count += size; - diff --git a/dev-libs/icu/files/icu-3.8-setBreakType-public.diff b/dev-libs/icu/files/icu-3.8-setBreakType-public.diff deleted file mode 100644 index 3320b92282bc..000000000000 --- a/dev-libs/icu/files/icu-3.8-setBreakType-public.diff +++ /dev/null @@ -1,24 +0,0 @@ -This patch makes setBreakType public (needed for OO.org), -pending a better upstream solution in 4.0. For details, see: -http://qa.openoffice.org/issues/show_bug.cgi?id=83146 -http://bugs.icu-project.org/trac/ticket/5498 -http://bugs.gentoo.org/show_bug.cgi?id=200010 -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=448745 -diff -Nau common/unicode.rbbi.h.orig common/unicode/rbbi.h ---- common/unicode/rbbi.h.orig 2007-10-31 15:52:08.000000000 +0100 -+++ common/unicode/rbbi.h 2007-10-31 15:52:47.000000000 +0100 -@@ -611,12 +611,14 @@ - virtual int32_t getBreakType() const; - #endif - -+public: - /** - * Set the type of the break iterator. - * @internal - */ - virtual void setBreakType(int32_t type); - -+protected: - /** - * Common initialization function, used by constructors and bufferClone. - * (Also used by DictionaryBasedBreakIterator::createBufferClone().) diff --git a/dev-libs/icu/icu-3.6-r2.ebuild b/dev-libs/icu/icu-3.6-r2.ebuild deleted file mode 100644 index 2872eede2d77..000000000000 --- a/dev-libs/icu/icu-3.6-r2.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/icu/icu-3.6-r2.ebuild,v 1.8 2008/12/07 12:06:07 vapier Exp $ - -inherit eutils - -DESCRIPTION="IBM Internationalization Components for Unicode" -HOMEPAGE="http://ibm.com/software/globalization/icu/" -SRC_URI="ftp://ftp.software.ibm.com/software/globalization/icu/${PV}/icu4c-${PV/./_}-src.tgz" - -LICENSE="as-is" -SLOT="0" -KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd" -IUSE="debug" - -DEPEND="" -RDEPEND="" - -S=${WORKDIR}/${PN}/source - -src_unpack() { - unpack ${A} - # Bug 208001 - epatch "${FILESDIR}"/${PN}-3.6-regexp-CVE-2007-4770+4771.diff -} - -src_compile() { - econf --enable-static $(use_enable debug) || die "econf failed" - emake -j1 || die "emake failed" -} - -src_install() { - emake DESTDIR="${D}" install || die "emake install failed" - dohtml ../readme.html ../license.html -} diff --git a/dev-libs/icu/icu-3.8.1-r1.ebuild b/dev-libs/icu/icu-3.8.1-r1.ebuild deleted file mode 100644 index a6bba797b215..000000000000 --- a/dev-libs/icu/icu-3.8.1-r1.ebuild +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright 1999-2009 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/icu/icu-3.8.1-r1.ebuild,v 1.8 2009/05/08 00:39:40 loki_val Exp $ - -inherit eutils versionator - -DESCRIPTION="International Components for Unicode" -HOMEPAGE="http://www.icu-project.org/ http://ibm.com/software/globalization/icu/" - -BASEURI="http://download.icu-project.org/files/${PN}4c/${PV}" -DOCS_PV="$(get_version_component_range 1-2)" -DOCS_BASEURI="http://download.icu-project.org/files/${PN}4c/${DOCS_PV}" -DOCS_PV="${DOCS_PV/./_}" -SRCPKG="${PN}4c-${PV//./_}-src.tgz" -USERGUIDE="${PN}-${DOCS_PV}-userguide.zip" -APIDOCS="${PN}4c-${DOCS_PV}-docs.zip" - -SRC_URI="${BASEURI}/${SRCPKG} - doc? ( ${DOCS_BASEURI}/${USERGUIDE} - ${DOCS_BASEURI}/${APIDOCS} )" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd" -IUSE="debug doc examples" - -DEPEND="doc? ( app-arch/unzip )" -RDEPEND="" - -S=${WORKDIR}/${PN}/source - -src_unpack() { - unpack ${SRCPKG} - if use doc ; then - mkdir userguide - pushd ./userguide > /dev/null - unpack ${USERGUIDE} - popd - - mkdir apidocs - pushd ./apidocs > /dev/null - unpack ${APIDOCS} - popd - fi - - # See http://qa.openoffice.org/issues/show_bug.cgi?id=83146 - # and http://bugs.icu-project.org/trac/ticket/5498 for details - cd "${S}" - epatch "${FILESDIR}"/${PN}-3.8-setBreakType-public.diff - - # Bug 208001 - epatch "${FILESDIR}"/${PN}-3.8-regexp-CVE-2007-4770+4771.diff - - # Bug 258377 - sed -i -e 's:^#elif$:#else:g' ${S}/layoutex/ParagraphLayout.cpp || die 'elif sed failed' - - # do not hardcode used CFLAGS, LDFLAGS etc. into icu-config - # Bug 202059 - # http://bugs.icu-project.org/trac/ticket/6102 - for x in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS ; do - sed -i -e "/^${x} =.*/s:@${x}@::" config/Makefile.inc.in || die "sed failed" - done -} - -src_compile() { - econf \ - --enable-static \ - $(use_enable debug) \ - $(use_enable examples samples) - - emake -j1 || die "emake failed" -} - -src_install() { - emake DESTDIR="${D}" install || die "emake install failed" - - dohtml ../readme.html - dodoc ../unicode-license.txt - if use doc ; then - insinto /usr/share/doc/${PF}/html/userguide - doins -r "${WORKDIR}"/userguide/* - - insinto /usr/share/doc/${PF}/html/apidocs - doins -r "${WORKDIR}"/apidocs/* - fi -} |