ports/127499: [PATCH] Update devel/icu to 4.0
Xin LI
delphij at FreeBSD.org
Fri Sep 19 21:10:02 UTC 2008
>Number: 127499
>Category: ports
>Synopsis: [PATCH] Update devel/icu to 4.0
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Fri Sep 19 21:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Xin LI
>Release: FreeBSD 7.0-STABLE i386
>Organization:
The FreeBSD Project
>Environment:
System: FreeBSD freefall.freebsd.org 7.0-STABLE FreeBSD 7.0-STABLE #34: Sat Apr 12 11:52:18 UTC 2008 simon at freefall.freebsd.org:/usr/src/sys/i386/compile/FREEFALL i386
>Description:
Update devel/icu to 4.0 release.
>How-To-Repeat:
>Fix:
--- icu-4.0.diff begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/devel/icu/Makefile,v
retrieving revision 1.30
diff -u -p -r1.30 Makefile
--- Makefile 8 Sep 2008 03:28:26 -0000 1.30
+++ Makefile 19 Sep 2008 18:43:02 -0000
@@ -6,11 +6,10 @@
#
PORTNAME= icu
-PORTVERSION= 3.8.1
-PORTREVISION= 1
+PORTVERSION= 4.0
CATEGORIES= devel
-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
-MASTER_SITE_SUBDIR=${PORTNAME}
+MASTER_SITES= http://download.icu-project.org/files/${PORTNAME}4c/${PORTVERSION}/ \
+ SF
DISTNAME= icu4c-${PORTVERSION:S/./_/g}
EXTRACT_SUFX= -src.tgz
@@ -50,7 +49,7 @@ MAN8+= gensprep.8
MAN8+= genuca.8
ICUMAJOR= ${PORTVERSION:S/.//:R}
-PLIST_SUB+= ICUMAJOR=${ICUMAJOR} ICUMINOR=1
+PLIST_SUB+= ICUMAJOR=${ICUMAJOR} ICUMINOR=0
PLIST_SUB+= ICUVER=${PORTVERSION}
.include <bsd.port.pre.mk>
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/devel/icu/distinfo,v
retrieving revision 1.9
diff -u -p -r1.9 distinfo
--- distinfo 7 Feb 2008 05:31:44 -0000 1.9
+++ distinfo 19 Sep 2008 18:10:54 -0000
@@ -1,3 +1,3 @@
-MD5 (icu4c-3_8_1-src.tgz) = a827dbc9d909febd4ec39b90386868ba
-SHA256 (icu4c-3_8_1-src.tgz) = 16dda09dff3f770e629313a4c50a82fee88baf87d89a3bb2a28806be07766cee
-SIZE (icu4c-3_8_1-src.tgz) = 10998841
+MD5 (icu4c-4_0-src.tgz) = d1a5da2f778da6680ca2de47e1cb9141
+SHA256 (icu4c-4_0-src.tgz) = d93dba726cd83a718278487c38fc0d112e04b1da957df5b2ca70bd4e7b45c43d
+SIZE (icu4c-4_0-src.tgz) = 12005247
Index: pkg-plist
===================================================================
RCS file: /home/ncvs/ports/devel/icu/pkg-plist,v
retrieving revision 1.9
diff -u -p -r1.9 pkg-plist
--- pkg-plist 7 Feb 2008 05:31:44 -0000 1.9
+++ pkg-plist 19 Sep 2008 19:01:40 -0000
@@ -25,6 +25,8 @@ include/layout/LayoutEngine.h
include/layout/ParagraphLayout.h
include/layout/RunArrays.h
include/layout/loengine.h
+include/layout/playout.h
+include/layout/plruns.h
@dirrm include/layout
include/unicode/basictz.h
include/unicode/brkiter.h
@@ -42,6 +44,9 @@ include/unicode/dcfmtsym.h
include/unicode/decimfmt.h
include/unicode/docmain.h
include/unicode/dtfmtsym.h
+include/unicode/dtintrv.h
+include/unicode/dtitvfmt.h
+include/unicode/dtitvinf.h
include/unicode/dtptngen.h
include/unicode/dtrule.h
include/unicode/fieldpos.h
@@ -58,6 +63,8 @@ include/unicode/numfmt.h
include/unicode/parseerr.h
include/unicode/parsepos.h
include/unicode/platform.h
+include/unicode/plurfmt.h
+include/unicode/plurrule.h
include/unicode/ppalmos.h
include/unicode/putil.h
include/unicode/pwin32.h
Index: files/patch-CVE-2007-4770
===================================================================
RCS file: files/patch-CVE-2007-4770
diff -N files/patch-CVE-2007-4770
--- files/patch-CVE-2007-4770 18 Feb 2008 17:06:33 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,304 +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;
Index: files/patch-putil
===================================================================
RCS file: files/patch-putil
diff -N files/patch-putil
--- files/patch-putil 7 Feb 2008 05:31:44 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
---- common/putil.c 2007-12-12 13:57:26.000000000 -0500
-+++ common/putil.c 2008-01-28 13:04:02.000000000 -0500
-@@ -577,5 +577,5 @@
- /* These platforms are likely to use Olson timezone IDs. */
- #define CHECK_LOCALTIME_LINK 1
--#if defined(U_LINUX)
-+#if defined(U_LINUX) || defined(U_BSD)
- #define TZDEFAULT "/etc/localtime"
- #define TZZONEINFO "/usr/share/zoneinfo/"
--- icu-4.0.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list