From ad5858097147f79c2fe96c9bb9262173abc578ef3e77d32668c16e7c1b8407dc Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Sat, 13 Sep 2008 00:21:47 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/icu?expand=0&rev=6 --- icu.changes | 21 +++ icu.spec | 42 +++-- icu4c-3_8-docs.tar.bz2 | 3 - icu4c-3_8_1-src.tar.bz2 | 3 - icu4c-4_0-docs.tar.bz2 | 3 + icu4c-4_0-src.tar.bz2 | 3 + libicu-regex.patch | 350 ---------------------------------------- 7 files changed, 60 insertions(+), 365 deletions(-) delete mode 100644 icu4c-3_8-docs.tar.bz2 delete mode 100644 icu4c-3_8_1-src.tar.bz2 create mode 100644 icu4c-4_0-docs.tar.bz2 create mode 100644 icu4c-4_0-src.tar.bz2 delete mode 100644 libicu-regex.patch diff --git a/icu.changes b/icu.changes index abb3d5c..778ea7c 100644 --- a/icu.changes +++ b/icu.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Sat Sep 6 00:54:42 CEST 2008 - maw@suse.de + +- Update to version 4.0: + (All of the bug numbers listed are against + http://bugs.icu-project.org/trac) + + Update to Unicode 5.1 (#5696) + + Locale Data: ICU uses and supports data from Common Locale Data + Repository (CLDR) 1.6, which includes many improvements in + quality and quantity of data + + Add/removeLikelySubtags (#6124) + + Charset converter file size improvement (#5987) + + Date Interval Formatting (#6157) Note: Calendar type supported + by this feature is Gregorian only in this release + + Improved Plural support + + Additional calendars: Chinese (#4081) and Coptic/Ethiopic + (#4571) + + Security fixes for CVE-2007-4770, CVE-2007-4771, and + CVE-2008-1036. +- Drop libicu-regex.patch, which has been upstreamed. + ------------------------------------------------------------------- Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de diff --git a/icu.spec b/icu.spec index a8e3d55..e38c242 100644 --- a/icu.spec +++ b/icu.spec @@ -1,10 +1,17 @@ # -# spec file for package icu (Version 3.8.1) +# spec file for package icu (Version 4.0) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -16,17 +23,16 @@ BuildRequires: gcc-c++ License: X11/MIT Group: System/Libraries AutoReqProv: on -Version: 3.8.1 -Release: 12 +Version: 4.0 +Release: 2 Requires: libicu = %{version} Url: http://ibm.com/software/globalization/icu -Source0: icu4c-3_8_1-src.tar.bz2 -Source1: icu4c-3_8-docs.tar.bz2 +Source0: icu4c-4_0-src.tar.bz2 +Source1: icu4c-4_0-docs.tar.bz2 Source3: SuSEconfig.icu # OOo-2.3.1 and above needs to access the setBreakType method, see # http://bugs.icu-project.org/trac/ticket/5498 Patch: icu4c-3_6-src-setBreakType-public.diff -Patch1: libicu-regex.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: International Components for Unicode @@ -128,7 +134,6 @@ Authors: %prep %setup -q -n icu -a1 %patch -%patch1 -p0 %build cd source @@ -136,6 +141,7 @@ rm -f config.cache %{?suse_update_config:%{suse_update_config -f }} export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" export CXXFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +export CXXFLAGS="$CXXFLAGS -DICU_DATA_DIR='/usr/share/icu/4.0/'" ./configure --prefix=/usr \ --sysconfdir=/etc \ --datadir=/usr/share \ @@ -226,6 +232,24 @@ rm -rf $RPM_BUILD_ROOT /usr/share/icu/%{version}/UnicodeData.txt %changelog +* Sat Sep 06 2008 maw@suse.de +- Update to version 4.0: + (All of the bug numbers listed are against + http://bugs.icu-project.org/trac) + + Update to Unicode 5.1 (#5696) + + Locale Data: ICU uses and supports data from Common Locale Data + Repository (CLDR) 1.6, which includes many improvements in + quality and quantity of data + + Add/removeLikelySubtags (#6124) + + Charset converter file size improvement (#5987) + + Date Interval Formatting (#6157) Note: Calendar type supported + by this feature is Gregorian only in this release + + Improved Plural support + + Additional calendars: Chinese (#4081) and Coptic/Ethiopic + (#4571) + + Security fixes for CVE-2007-4770, CVE-2007-4771, and + CVE-2008-1036. +- Drop libicu-regex.patch, which has been upstreamed. * Thu Apr 10 2008 ro@suse.de - added baselibs.conf file to build xxbit packages for multilib support diff --git a/icu4c-3_8-docs.tar.bz2 b/icu4c-3_8-docs.tar.bz2 deleted file mode 100644 index 3822ece..0000000 --- a/icu4c-3_8-docs.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12b8d0486af18fd4590329b592f2126c7608a4094339fb80f70ee573d55a0b11 -size 2339992 diff --git a/icu4c-3_8_1-src.tar.bz2 b/icu4c-3_8_1-src.tar.bz2 deleted file mode 100644 index 65103c8..0000000 --- a/icu4c-3_8_1-src.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:919f4684e0924d6be941efef16a6c2b2e74e2790c6a2d6a373928000d5b97301 -size 9320021 diff --git a/icu4c-4_0-docs.tar.bz2 b/icu4c-4_0-docs.tar.bz2 new file mode 100644 index 0000000..c6c0396 --- /dev/null +++ b/icu4c-4_0-docs.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:550c05b2469c1626f6bba1ec491eaa7ddc78730c0a12ebd4fcfe7a1749dc8ddc +size 297209 diff --git a/icu4c-4_0-src.tar.bz2 b/icu4c-4_0-src.tar.bz2 new file mode 100644 index 0000000..aa6e9d6 --- /dev/null +++ b/icu4c-4_0-src.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d6a4cff4d83aec978eca493bdee6e028be68e4a8e990d98852d09a61b2856f1 +size 9375923 diff --git a/libicu-regex.patch b/libicu-regex.patch deleted file mode 100644 index 72738e4..0000000 --- a/libicu-regex.patch +++ /dev/null @@ -1,350 +0,0 @@ -Index: source/i18n/regexcmp.cpp -=================================================================== ---- source/i18n/regexcmp.cpp (revision 23251) -+++ source/i18n/regexcmp.cpp (revision 23418) -@@ -2,7 +2,7 @@ - // - // 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. - // - // This file contains the ICU regular expression compiler, which is responsible -@@ -1186,14 +1186,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; - -Index: source/i18n/rematch.cpp -=================================================================== ---- source/i18n/rematch.cpp (revision 23251) -+++ source/i18n/rematch.cpp (revision 23418) -@@ -1,6 +1,6 @@ - /* - ************************************************************************** --* Copyright (C) 2002-2007 International Business Machines Corporation * -+* Copyright (C) 2002-2008 International Business Machines Corporation * - * and others. All rights reserved. * - ************************************************************************** - */ -@@ -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,8 +62,9 @@ - } - if (fStack == NULL || fData == NULL) { - fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } -- - reset(RegexStaticSets::gStaticSets->fEmptyString); - } - -@@ -78,6 +88,8 @@ - } - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(input); - } -@@ -102,6 +114,8 @@ - } - if (fStack == NULL || fData == NULL) { - status = U_MEMORY_ALLOCATION_ERROR; -+ } else { -+ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); - } - reset(RegexStaticSets::gStaticSets->fEmptyString); - } -@@ -1014,6 +1028,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. -@@ -1029,8 +1051,8 @@ - fp->fPatIdx = savePatIdx; - return (REStackFrame *)newFP; - } -- -- -+ -+ - //-------------------------------------------------------------------------------- - // - // MatchAt This is the actual matching engine. -@@ -2261,6 +2283,7 @@ - } - - if (U_FAILURE(status)) { -+ isMatch = FALSE; - break; - } - } -Index: source/test/intltest/regextst.h -=================================================================== ---- source/test/intltest/regextst.h (revision 23251) -+++ source/test/intltest/regextst.h (revision 23418) -@@ -1,6 +1,6 @@ - /******************************************************************** - * COPYRIGHT: -- * Copyright (c) 2002-2007, International Business Machines Corporation and -+ * Copyright (c) 2002-2008, International Business Machines Corporation and - * others. All Rights Reserved. - ********************************************************************/ - -@@ -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, int32_t line); -Index: source/test/intltest/regextst.cpp -=================================================================== ---- source/test/intltest/regextst.cpp (revision 23251) -+++ source/test/intltest/regextst.cpp (revision 23418) -@@ -1,6 +1,6 @@ - /******************************************************************** - * COPYRIGHT: -- * Copyright (c) 2002-2007, International Business Machines Corporation and -+ * Copyright (c) 2002-2008, International Business Machines Corporation and - * others. All Rights Reserved. - ********************************************************************/ - -@@ -66,6 +66,10 @@ - case 6: name = "PerlTests"; - if (exec) PerlTests(); - break; -+ case 7: name = "Bug 6149"; -+ if (exec) Bug6149(); -+ break; -+ - - - default: name = ""; -@@ -1639,6 +1643,12 @@ - - // 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); - - } - -@@ -2122,6 +2132,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 */ - -Index: source/common/uvectr32.cpp -=================================================================== ---- source/common/uvectr32.cpp (revision 23251) -+++ source/common/uvectr32.cpp (revision 23418) -@@ -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= 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; -+ } -+} -+ - /** - * Change the size of this vector as follows: If newSize is smaller, - * then truncate the array, possibly deleting held elements for i >= -Index: source/common/uvectr32.h -=================================================================== ---- source/common/uvectr32.h (revision 23251) -+++ source/common/uvectr32.h (revision 23418) -@@ -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;