From 6c5565b8d501c25466d2b3977d4156204cb4be10 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 20 Mar 2013 10:37:10 +0100 Subject: icu: import from F18 --- CVE-2013-0900_umutex.patch | 12 + gencfu-man.patch | 122 +++++ gennorm2-man.patch | 128 +++++ icu-config.sh | 11 + icu.7601.Indic-ccmp.patch | 43 ++ icu.8198.revert.icu5431.patch | 129 +++++ icu.8800.freeserif.crash.patch | 14 + icu.9283.regexcmp.crash.patch | 36 ++ ...9737.CVE-2013-0900_changesets_32865_32908.patch | 291 ++++++++++ icu.spec | 584 +++++++++++++++++++++ icuinfo-man.patch | 143 +++++ 11 files changed, 1513 insertions(+) create mode 100644 CVE-2013-0900_umutex.patch create mode 100644 gencfu-man.patch create mode 100644 gennorm2-man.patch create mode 100644 icu-config.sh create mode 100644 icu.7601.Indic-ccmp.patch create mode 100644 icu.8198.revert.icu5431.patch create mode 100644 icu.8800.freeserif.crash.patch create mode 100644 icu.9283.regexcmp.crash.patch create mode 100644 icu.9737.CVE-2013-0900_changesets_32865_32908.patch create mode 100644 icu.spec create mode 100644 icuinfo-man.patch diff --git a/CVE-2013-0900_umutex.patch b/CVE-2013-0900_umutex.patch new file mode 100644 index 0000000..82eced7 --- /dev/null +++ b/CVE-2013-0900_umutex.patch @@ -0,0 +1,12 @@ +diff -ruN icu.orig/source/common/locid.cpp icu/source/common/locid.cpp +--- icu.orig/source/common/locid.cpp 2013-03-06 21:27:35.170696967 +0100 ++++ icu/source/common/locid.cpp 2013-03-06 21:29:47.711378977 +0100 +@@ -53,7 +53,7 @@ + static Locale *gLocaleCache = NULL; + + // gDefaultLocaleMutex protects all access to gDefaultLocalesHashT and gDefaultLocale. +-static UMutex gDefaultLocaleMutex = U_MUTEX_INITIALIZER; ++static UMTX gDefaultLocaleMutex = NULL; + static UHashtable *gDefaultLocalesHashT = NULL; + static Locale *gDefaultLocale = NULL; + diff --git a/gencfu-man.patch b/gencfu-man.patch new file mode 100644 index 0000000..ecb965c --- /dev/null +++ b/gencfu-man.patch @@ -0,0 +1,122 @@ +Description: supply manual page for program that doesn't have one +Author: Jay Berkenbilt +Bug: http://bugs.icu-project.org/trac/ticket/7409 + +diff -r -u -N icu.orig/source/tools/gencfu/gencfu.1.in icu/source/tools/gencfu/gencfu.1.in +--- icu.orig/source/tools/gencfu/gencfu.1.in 1970-01-01 01:00:00.000000000 +0100 ++++ icu/source/tools/gencfu/gencfu.1.in 2013-02-23 04:00:27.336665360 +0100 +@@ -0,0 +1,91 @@ ++.\" Hey, Emacs! This is -*-nroff-*- you know... ++.\" ++.\" gencfu.1: manual page for the gencfu utility ++.\" ++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others ++.\" ++.TH GENCFU 1 "24 May 2009" "ICU MANPAGE" "ICU @VERSION@ Manual" ++.SH NAME ++.B gencfu ++\- Generates Unicode Confusable data files ++.SH SYNOPSIS ++.B gencfu ++[ ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++] ++[ ++.BR "\-V\fP, \fB\-\-version" ++] ++[ ++.BR "\-c\fP, \fB\-\-copyright" ++] ++[ ++.BR "\-v\fP, \fB\-\-verbose" ++] ++[ ++.BI "\-d\fP, \fB\-\-destdir" " destination" ++] ++[ ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++] ++.BI "\-r\fP, \fB\-\-rules" " rule\-file" ++.BI "\-w\fP, \fB\-\-wsrules" " whole\-script\-rule\-file" ++.BI "\-o\fP, \fB\-\-out" " output\-file" ++.SH DESCRIPTION ++.B gencfu ++reads confusable character definitions in the input file, which are ++plain text files containing confusable character ++definitions in the input format defined by Unicode UAX39 for the files ++.I confusables.txt ++and ++.I confusablesWholeScript.txt. ++This source (.txt) format is also accepted by ICU spoof detectors. ++The files must be encoded in utf-8 format, with or without a BOM. ++Normally the output data file has the ++.B .cfu ++extension. ++.SH OPTIONS ++.TP ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++Print help about usage and exit. ++.TP ++.BR "\-V\fP, \fB\-\-version" ++Print the version of ++.B gencfu ++and exit. ++.TP ++.BR "\-c\fP, \fB\-\-copyright" ++Embeds the standard ICU copyright into the ++.IR output-file . ++.TP ++.BR "\-v\fP, \fB\-\-verbose" ++Display extra informative messages during execution. ++.TP ++.BI "\-d\fP, \fB\-\-destdir" " destination" ++Set the destination directory of the ++.IR output-file ++to ++.IR destination . ++.TP ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++Look for any necessary ICU data files in ++.IR directory . ++For example, the file ++.B pnames.icu ++must be located when ICU's data is not built as a shared library. ++The default ICU data directory is specified by the environment variable ++.BR ICU_DATA . ++Most configurations of ICU do not require this argument. ++.TP ++.BI "\-r\fP, \fB\-\-rules" " rule\-file" ++The source file to read. ++.TP ++.BI "\-w\fP, \fB\-\-wsrules" " whole\-script\-rule\-file" ++The whole script source file to read. ++.TP ++.BI "\-o\fP, \fB\-\-out" " output\-file" ++The output data file to write. ++.SH VERSION ++1.0 ++.SH COPYRIGHT ++Copyright (C) 2009 International Business Machines Corporation and others +diff -r -u -N icu.orig/source/tools/gencfu/Makefile.in icu/source/tools/gencfu/Makefile.in +--- icu.orig/source/tools/gencfu/Makefile.in 2012-04-05 22:46:26.000000000 +0200 ++++ icu/source/tools/gencfu/Makefile.in 2013-02-23 04:00:27.335665354 +0100 +@@ -17,7 +17,7 @@ + + SECTION = 1 + +-# MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) ++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) + + + ## Extra files to remove for 'make clean' +@@ -55,8 +55,8 @@ + $(INSTALL) $(TARGET) $(DESTDIR)$(bindir) + + install-man: $(MAN_FILES) +-# $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) +-# $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) ++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) ++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) + + dist-local: + diff --git a/gennorm2-man.patch b/gennorm2-man.patch new file mode 100644 index 0000000..846432c --- /dev/null +++ b/gennorm2-man.patch @@ -0,0 +1,128 @@ +Description: supply manual page for program that doesn't have one +Author: Jay Berkenbilt +Bug: http://bugs.icu-project.org/trac/ticket/7554 + +diff -r -u -N icu.orig/source/tools/gennorm2/gennorm2.8.in icu/source/tools/gennorm2/gennorm2.8.in +--- icu.orig/source/tools/gennorm2/gennorm2.8.in 1970-01-01 01:00:00.000000000 +0100 ++++ icu/source/tools/gennorm2/gennorm2.8.in 2013-02-22 21:09:26.245631512 +0100 +@@ -0,0 +1,71 @@ ++.\" Hey, Emacs! This is -*-nroff-*- you know... ++.\" ++.\" gennorm2.8: manual page for the gennorm2 utility ++.\" ++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others ++.\" ++.TH GENNORM2 8 "15 March 2010" "ICU MANPAGE" "ICU @VERSION@ Manual" ++.SH NAME ++.B gennorm2 ++\- Builds binary data file with Unicode normalization data. ++.SH SYNOPSIS ++.B gennorm2 ++[ ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++] ++[ ++.BR "\-V\fP, \fB\-\-version" ++] ++[ ++.BR "\-c\fP, \fB\-\-copyright" ++] ++[ ++.BR "\-v\fP, \fB\-\-verbose" ++] ++[ ++.BI "\-u\fP, \fB\-\-unicode" " unicode\-version\-number" ++] ++[ ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++] ++[ ++.BI "\-o\fP, \fB\-\-output" " output\-filename" ++] ++.BI "\fB\-\-fast" ++.SH DESCRIPTION ++.B gennorm2 ++reads text files that define Unicode normalization, ++them, and builds a binary data file. ++.SH OPTIONS ++.TP ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++Print help about usage and exit. ++.TP ++.BR "\-V\fP, \fB\-\-version" ++Print the version of ++.B gennorm2 ++and exit. ++.TP ++.BR "\-c\fP, \fB\-\-copyright" ++Include a copyright notice. ++.TP ++.BR "\-v\fP, \fB\-\-verbose" ++Display extra informative messages during execution. ++.TP ++.BR "\-u\fP, \fB\-\-unicode" ++Specify Unicode version number, such as 5.2.0. ++.TP ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++Specify the input directory. ++.TP ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++Set the name of the output file. ++.TP ++.BI "\fB\-\-fast" ++optimize the .nrm file for fast normalization, ++which might increase its size (Writes fully decomposed ++regular mappings instead of delta mappings. ++You should measure the runtime speed to make sure that ++this is a good trade-off.) ++.SH COPYRIGHT ++Copyright (C) 2009-2010 International Business Machines Corporation and others +diff -r -u -N icu.orig/source/tools/gennorm2/Makefile.in icu/source/tools/gennorm2/Makefile.in +--- icu.orig/source/tools/gennorm2/Makefile.in 2013-01-11 01:23:32.000000000 +0100 ++++ icu/source/tools/gennorm2/Makefile.in 2013-02-22 21:09:26.245631512 +0100 +@@ -16,8 +16,13 @@ + + TARGET_STUB_NAME = gennorm2 + ++SECTION = 8 ++ ++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) ++ ++ + ## Extra files to remove for 'make clean' +-CLEANFILES = *~ $(DEPS) ++CLEANFILES = *~ $(DEPS) $(MAN_FILES) + + ## Target information + TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT) +@@ -44,12 +49,16 @@ + dist: dist-local + check: all check-local + +-all-local: $(TARGET) ++all-local: $(TARGET) $(MAN_FILES) + +-install-local: all-local ++install-local: all-local install-man + $(MKINSTALLDIRS) $(DESTDIR)$(sbindir) + $(INSTALL) $(TARGET) $(DESTDIR)$(sbindir) + ++install-man: $(MAN_FILES) ++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) ++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) ++ + dist-local: + + clean-local: +@@ -70,6 +79,11 @@ + $(POST_BUILD_STEP) + + ++%.$(SECTION): $(srcdir)/%.$(SECTION).in ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ++ ++ + ifeq (,$(MAKECMDGOALS)) + -include $(DEPS) + else diff --git a/icu-config.sh b/icu-config.sh new file mode 100644 index 0000000..df2089d --- /dev/null +++ b/icu-config.sh @@ -0,0 +1,11 @@ +#!/bin/sh +OOO_ARCH=$(uname -m) +case $OOO_ARCH in + x86_64 | s390x | ppc64 | sparc64) + bits=64 + ;; + * ) + bits=32 + ;; +esac +exec icu-config-$bits "$@" diff --git a/icu.7601.Indic-ccmp.patch b/icu.7601.Indic-ccmp.patch new file mode 100644 index 0000000..328a285 --- /dev/null +++ b/icu.7601.Indic-ccmp.patch @@ -0,0 +1,43 @@ +--- icu/source/layout/IndicReordering.cpp 2009-07-01 20:51:26.000000000 +0200 ++++ icu/source/layout/IndicReordering.cpp 2011-01-08 11:12:49.950566538 +0100 +@@ -13,6 +13,7 @@ + + U_NAMESPACE_BEGIN + ++#define ccmpFeatureTag LE_CCMP_FEATURE_TAG + #define loclFeatureTag LE_LOCL_FEATURE_TAG + #define initFeatureTag LE_INIT_FEATURE_TAG + #define nuktFeatureTag LE_NUKT_FEATURE_TAG +@@ -35,6 +36,7 @@ + #define caltFeatureTag LE_CALT_FEATURE_TAG + #define kernFeatureTag LE_KERN_FEATURE_TAG + ++#define ccmpFeatureMask 0x00000001UL + #define loclFeatureMask 0x80000000UL + #define rphfFeatureMask 0x40000000UL + #define blwfFeatureMask 0x20000000UL +@@ -73,7 +75,7 @@ + + #define repositionedGlyphMask 0x00000002UL + +-#define basicShapingFormsMask ( loclFeatureMask | nuktFeatureMask | akhnFeatureMask | rkrfFeatureMask | blwfFeatureMask | halfFeatureMask | vatuFeatureMask | cjctFeatureMask ) ++#define basicShapingFormsMask ( ccmpFeatureMask | loclFeatureMask | nuktFeatureMask | akhnFeatureMask | rkrfFeatureMask | blwfFeatureMask | halfFeatureMask | vatuFeatureMask | cjctFeatureMask ) + #define positioningFormsMask ( kernFeatureMask | distFeatureMask | abvmFeatureMask | blwmFeatureMask ) + #define presentationFormsMask ( presFeatureMask | abvsFeatureMask | blwsFeatureMask | pstsFeatureMask | halnFeatureMask | caltFeatureMask ) + +@@ -480,6 +482,7 @@ + #define tagArray0 (rphfFeatureMask | tagArray1) + + static const FeatureMap featureMap[] = { ++ {ccmpFeatureTag, ccmpFeatureMask}, + {loclFeatureTag, loclFeatureMask}, + {initFeatureTag, initFeatureMask}, + {nuktFeatureTag, nuktFeatureMask}, +@@ -502,6 +505,7 @@ + static const le_int32 featureCount = LE_ARRAY_SIZE(featureMap); + + static const FeatureMap v2FeatureMap[] = { ++ {ccmpFeatureTag, ccmpFeatureMask}, + {loclFeatureTag, loclFeatureMask}, + {nuktFeatureTag, nuktFeatureMask}, + {akhnFeatureTag, akhnFeatureMask}, diff --git a/icu.8198.revert.icu5431.patch b/icu.8198.revert.icu5431.patch new file mode 100644 index 0000000..4c3e78b --- /dev/null +++ b/icu.8198.revert.icu5431.patch @@ -0,0 +1,129 @@ +Index: icu/trunk/source/layout/IndicReordering.cpp +=================================================================== +--- icu/trunk/source/layout/IndicReordering.cpp (revision 25772) ++++ icu/trunk/source/layout/IndicReordering.cpp (revision 26090) +@@ -126,4 +126,8 @@ + FeatureMask fSMFeatures; + ++ LEUnicode fPreBaseConsonant; ++ LEUnicode fPreBaseVirama; ++ le_int32 fPBCIndex; ++ FeatureMask fPBCFeatures; + + void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass) +@@ -172,5 +176,6 @@ + fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups), + fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0), +- fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0) ++ fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0), ++ fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0) + { + // nothing else to do... +@@ -191,4 +196,6 @@ + fVMabove = fVMpost = 0; + fSMabove = fSMbelow = 0; ++ ++ fPreBaseConsonant = fPreBaseVirama = 0; + } + +@@ -386,4 +393,12 @@ + } + ++ void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features) ++ { ++ fPBCIndex = index; ++ fPreBaseConsonant = PBConsonant; ++ fPreBaseVirama = PBVirama; ++ fPBCFeatures = features; ++ } ++ + void noteBaseConsonant() + { +@@ -465,4 +480,20 @@ + } + ++ void writePreBaseConsonant() ++ { ++ // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam. However, ++ // it seems that almost none of the fonts for Malayalam are set up to handle this. ++ // So, we're going to force the issue here by using the rakar as defined with RA in most fonts. ++ ++ if (fPreBaseConsonant == 0x0d31) { // RRA ++ fPreBaseConsonant = 0x0d30; // RA ++ } ++ ++ if (fPreBaseConsonant != 0) { ++ writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures); ++ writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures); ++ } ++ } ++ + le_int32 getOutputIndex() + { +@@ -723,4 +754,5 @@ + } + ++ + IndicClassTable::CharClass charClass = CC_RESERVED; + IndicClassTable::CharClass nextClass = CC_RESERVED; +@@ -730,7 +762,9 @@ + le_bool seenVattu = FALSE; + le_bool seenBelowBaseForm = FALSE; ++ le_bool seenPreBaseForm = FALSE; + le_bool hasNukta = FALSE; + le_bool hasBelowBaseForm = FALSE; + le_bool hasPostBaseForm = FALSE; ++ le_bool hasPreBaseForm = FALSE; + + if (postBase < markStart && classTable->isNukta(chars[postBase])) { +@@ -746,12 +780,20 @@ + hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta; + hasPostBaseForm = IndicClassTable::hasPostBaseForm(charClass) && !hasNukta; ++ hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta; + + if (IndicClassTable::isConsonant(charClass)) { + if (postBaseLimit == 0 || seenVattu || + (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) || +- !(hasBelowBaseForm || hasPostBaseForm)) { ++ !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) { + break; + } + ++ // Note any pre-base consonants ++ if ( baseConsonant == lastConsonant && lastConsonant > 0 && ++ hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) { ++ output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2); ++ seenPreBaseForm = TRUE; ++ ++ } + // consonants with nuktas are never vattus + seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta; +@@ -786,10 +828,12 @@ + + // write any pre-base consonants ++ output.writePreBaseConsonant(); ++ + le_bool supressVattu = TRUE; + + for (i = baseLimit; i < baseConsonant; i += 1) { + LEUnicode ch = chars[i]; +- // Don't put 'blwf' on first consonant. +- FeatureMask features = (i == baseLimit? tagArray2 : tagArray1); ++ // Don't put 'pstf' or 'blwf' on anything before the base consonant. ++ FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask ); + + charClass = classTable->getCharClass(ch); +@@ -842,5 +886,5 @@ + + // write below-base consonants +- if (baseConsonant != lastConsonant) { ++ if (baseConsonant != lastConsonant && !seenPreBaseForm) { + for (i = bcSpan + 1; i < postBase; i += 1) { + output.writeChar(chars[i], i, tagArray1); +@@ -872,5 +916,5 @@ + // write post-base consonants + // FIXME: does this put the right tags on post-base consonants? +- if (baseConsonant != lastConsonant) { ++ if (baseConsonant != lastConsonant && !seenPreBaseForm) { + if (postBase <= lastConsonant) { + for (i = postBase; i <= lastConsonant; i += 1) { diff --git a/icu.8800.freeserif.crash.patch b/icu.8800.freeserif.crash.patch new file mode 100644 index 0000000..c2e0be6 --- /dev/null +++ b/icu.8800.freeserif.crash.patch @@ -0,0 +1,14 @@ +diff -urN icu.old/source/layout/LookupProcessor.cpp icu/source/layout/LookupProcessor.cpp +--- icu.old/source/layout/LookupProcessor.cpp 2011-09-05 18:35:11.221515458 +0200 ++++ icu/source/layout/LookupProcessor.cpp 2011-09-05 18:41:30.021510913 +0200 +@@ -201,7 +201,9 @@ + + if (requiredFeatureIndex != 0xFFFF) { + requiredFeatureTable = featureListTable->getFeatureTable(requiredFeatureIndex, &requiredFeatureTag); +- featureReferences += SWAPW(featureTable->lookupCount); ++ if (requiredFeatureTable) { ++ featureReferences += SWAPW(requiredFeatureTable->lookupCount); ++ } + } + + lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences); diff --git a/icu.9283.regexcmp.crash.patch b/icu.9283.regexcmp.crash.patch new file mode 100644 index 0000000..9cf7e3e --- /dev/null +++ b/icu.9283.regexcmp.crash.patch @@ -0,0 +1,36 @@ +--- icu/source/i18n/regexcmp.cpp (revision 31398) ++++ icu/source/i18n/regexcmp.cpp (revision 31782) +@@ -3307,8 +3307,29 @@ + + case URX_STRING_I: +- // TODO: Is the case-folded string the longest? +- // If so we can optimize this the same as URX_STRING. +- loc++; +- currentLen = INT32_MAX; ++ // TODO: This code assumes that any user string that matches will be no longer ++ // than our compiled string, with case insensitive matching. ++ // Our compiled string has been case-folded already. ++ // ++ // Any matching user string will have no more code points than our ++ // compiled (folded) string. Folding may add code points, but ++ // not remove them. ++ // ++ // There is a potential problem if a supplemental code point ++ // case-folds to a BMP code point. In this case our compiled string ++ // could be shorter (in code units) than a matching user string. ++ // ++ // At this time (Unicode 6.1) there are no such characters, and this case ++ // is not being handled. A test, intltest regex/Bug9283, will fail if ++ // any problematic characters are added to Unicode. ++ // ++ // If this happens, we can make a set of the BMP chars that the ++ // troublesome supplementals fold to, scan our string, and bump the ++ // currentLen one extra for each that is found. ++ // ++ { ++ loc++; ++ int32_t stringLenOp = (int32_t)fRXPat->fCompiledPat->elementAti(loc); ++ currentLen = safeIncrement(currentLen, URX_VAL(stringLenOp)); ++ } + break; + diff --git a/icu.9737.CVE-2013-0900_changesets_32865_32908.patch b/icu.9737.CVE-2013-0900_changesets_32865_32908.patch new file mode 100644 index 0000000..0dc7476 --- /dev/null +++ b/icu.9737.CVE-2013-0900_changesets_32865_32908.patch @@ -0,0 +1,291 @@ +Squashed into one: +https://ssl.icu-project.org/trac/changeset/32865 +https://ssl.icu-project.org/trac/changeset/32908 + +diff -ruN icu.orig/source/common/locid.cpp icu/source/common/locid.cpp +--- icu.orig/source/common/locid.cpp 2012-04-05 22:46:14.000000000 +0200 ++++ icu/source/common/locid.cpp 2013-03-05 21:54:11.974608225 +0100 +@@ -1,6 +1,6 @@ + /* + ********************************************************************** +- * Copyright (C) 1997-2011, International Business Machines ++ * Copyright (C) 1997-2012, International Business Machines + * Corporation and others. All Rights Reserved. + ********************************************************************** + * +@@ -33,6 +33,7 @@ + #include "unicode/locid.h" + #include "unicode/uloc.h" + #include "putilimp.h" ++#include "mutex.h" + #include "umutex.h" + #include "uassert.h" + #include "cmemory.h" +@@ -43,6 +44,21 @@ + + #define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) + ++U_CDECL_BEGIN ++static UBool U_CALLCONV locale_cleanup(void); ++U_CDECL_END ++ ++U_NAMESPACE_BEGIN ++ ++static Locale *gLocaleCache = NULL; ++ ++// gDefaultLocaleMutex protects all access to gDefaultLocalesHashT and gDefaultLocale. ++static UMutex gDefaultLocaleMutex = U_MUTEX_INITIALIZER; ++static UHashtable *gDefaultLocalesHashT = NULL; ++static Locale *gDefaultLocale = NULL; ++ ++U_NAMESPACE_END ++ + typedef enum ELocalePos { + eENGLISH, + eFRENCH, +@@ -77,10 +93,6 @@ + UBool valuesToo, + UErrorCode *status); + +-static icu::Locale *gLocaleCache = NULL; +-static icu::Locale *gDefaultLocale = NULL; +-static UHashtable *gDefaultLocalesHashT = NULL; +- + U_CDECL_BEGIN + // + // Deleter function for Locales owned by the default Locale hash table/ +@@ -102,24 +114,19 @@ + if (gDefaultLocalesHashT) { + uhash_close(gDefaultLocalesHashT); // Automatically deletes all elements, using deleter func. + gDefaultLocalesHashT = NULL; ++ gDefaultLocale = NULL; + } +- else if (gDefaultLocale) { +- // The cache wasn't created, and only one default locale was created. +- delete gDefaultLocale; +- } +- gDefaultLocale = NULL; + + return TRUE; + } + U_CDECL_END + + U_NAMESPACE_BEGIN +-// +-// locale_set_default_internal. +-// +-void locale_set_default_internal(const char *id) +-{ +- UErrorCode status = U_ZERO_ERROR; ++ ++Locale *locale_set_default_internal(const char *id, UErrorCode& status) { ++ // Synchronize this entire function. ++ Mutex lock(&gDefaultLocaleMutex); ++ + UBool canonicalize = FALSE; + + // If given a NULL string for the locale id, grab the default +@@ -127,17 +134,10 @@ + // (Different from most other locale APIs, where a null name means use + // the current ICU default locale.) + if (id == NULL) { +- umtx_lock(NULL); +- id = uprv_getDefaultLocaleID(); +- umtx_unlock(NULL); ++ id = uprv_getDefaultLocaleID(); // This function not thread safe? TODO: verify. + canonicalize = TRUE; // always canonicalize host ID + } + +- // put the locale id into a canonical form, +- // in preparation for looking up this locale in the hash table of +- // already-created locale objects. +- // +- status = U_ZERO_ERROR; + char localeNameBuf[512]; + + if (canonicalize) { +@@ -148,100 +148,37 @@ + localeNameBuf[sizeof(localeNameBuf)-1] = 0; // Force null termination in event of + // a long name filling the buffer. + // (long names are truncated.) ++ // ++ if (U_FAILURE(status)) { ++ return gDefaultLocale; ++ } + +- // Lazy creation of the hash table itself, if needed. +- UBool isOnlyLocale; +- UMTX_CHECK(NULL, (gDefaultLocale == NULL), isOnlyLocale); +- if (isOnlyLocale) { +- // We haven't seen this locale id before. +- // Create a new Locale object for it. +- Locale *newFirstDefault = new Locale(Locale::eBOGUS); +- if (newFirstDefault == NULL) { +- // No way to report errors from here. +- return; +- } +- newFirstDefault->init(localeNameBuf, FALSE); +- umtx_lock(NULL); +- if (gDefaultLocale == NULL) { +- gDefaultLocale = newFirstDefault; // Assignment to gDefaultLocale must happen inside mutex +- newFirstDefault = NULL; +- ucln_common_registerCleanup(UCLN_COMMON_LOCALE, locale_cleanup); +- } +- // Else some other thread raced us through here, and set the new Locale. +- // Use the hash table next. +- umtx_unlock(NULL); +- if (newFirstDefault == NULL) { +- // We were successful in setting the locale, and we were the first one to set it. +- return; +- } +- // else start using the hash table. +- } +- +- // Lazy creation of the hash table itself, if needed. +- UBool hashTableNeedsInit; +- UMTX_CHECK(NULL, (gDefaultLocalesHashT == NULL), hashTableNeedsInit); +- if (hashTableNeedsInit) { +- status = U_ZERO_ERROR; +- UHashtable *tHashTable = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status); ++ if (gDefaultLocalesHashT == NULL) { ++ gDefaultLocalesHashT = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status); + if (U_FAILURE(status)) { +- return; ++ return gDefaultLocale; + } +- uhash_setValueDeleter(tHashTable, deleteLocale); +- umtx_lock(NULL); +- if (gDefaultLocalesHashT == NULL) { +- gDefaultLocalesHashT = tHashTable; +- ucln_common_registerCleanup(UCLN_COMMON_LOCALE, locale_cleanup); +- } else { +- uhash_close(tHashTable); +- hashTableNeedsInit = FALSE; +- } +- umtx_unlock(NULL); ++ uhash_setValueDeleter(gDefaultLocalesHashT, deleteLocale); ++ ucln_common_registerCleanup(UCLN_COMMON_LOCALE, locale_cleanup); + } + +- // Hash table lookup, key is the locale full name +- umtx_lock(NULL); + Locale *newDefault = (Locale *)uhash_get(gDefaultLocalesHashT, localeNameBuf); +- if (newDefault != NULL) { +- // We have the requested locale in the hash table already. +- // Just set it as default. Inside the mutex lock, for those troublesome processors. +- gDefaultLocale = newDefault; +- umtx_unlock(NULL); +- } else { +- umtx_unlock(NULL); +- // We haven't seen this locale id before. +- // Create a new Locale object for it. ++ if (newDefault == NULL) { + newDefault = new Locale(Locale::eBOGUS); + if (newDefault == NULL) { +- // No way to report errors from here. +- return; ++ status = U_MEMORY_ALLOCATION_ERROR; ++ return gDefaultLocale; + } + newDefault->init(localeNameBuf, FALSE); +- +- // Add newly created Locale to the hash table of default Locales +- const char *key = newDefault->getName(); +- U_ASSERT(uprv_strcmp(key, localeNameBuf) == 0); +- umtx_lock(NULL); +- Locale *hashTableVal = (Locale *)uhash_get(gDefaultLocalesHashT, key); +- if (hashTableVal == NULL) { +- if (hashTableNeedsInit) { +- // This is the second request to set the locale. +- // Cache the first one. +- uhash_put(gDefaultLocalesHashT, (void *)gDefaultLocale->getName(), gDefaultLocale, &status); +- } +- uhash_put(gDefaultLocalesHashT, (void *)key, newDefault, &status); +- gDefaultLocale = newDefault; +- // ignore errors from hash table insert. (Couldn't do anything anyway) +- // We can still set the default Locale, +- // it just wont be cached, and will eventually leak. +- } else { +- // Some other thread raced us through here, and got the new Locale +- // into the hash table before us. Use that one. +- gDefaultLocale = hashTableVal; // Assignment to gDefaultLocale must happen inside mutex +- delete newDefault; ++ uhash_put(gDefaultLocalesHashT, (char*) newDefault->getName(), newDefault, &status); ++ if (U_FAILURE(status)) { ++ return gDefaultLocale; + } +- umtx_unlock(NULL); + } ++ gDefaultLocale = newDefault; ++ return gDefaultLocale; + } ++ + U_NAMESPACE_END + + /* sfb 07/21/99 */ +@@ -249,7 +186,8 @@ + locale_set_default(const char *id) + { + U_NAMESPACE_USE +- locale_set_default_internal(id); ++ UErrorCode status = U_ZERO_ERROR; ++ locale_set_default_internal(id, status); + } + /* end */ + +@@ -257,7 +195,6 @@ + locale_get_default(void) + { + U_NAMESPACE_USE +- + return Locale::getDefault().getName(); + } + +@@ -663,19 +600,14 @@ + const Locale& U_EXPORT2 + Locale::getDefault() + { +- const Locale *retLocale; +- UMTX_CHECK(NULL, gDefaultLocale, retLocale); +- if (retLocale == NULL) { +- locale_set_default_internal(NULL); +- umtx_lock(NULL); +- // Need a mutex in case some other thread set a new +- // default inbetween when we set and when we get the new default. For +- // processors with weak memory coherency, we might not otherwise see all +- // of the newly created new default locale. +- retLocale = gDefaultLocale; +- umtx_unlock(NULL); ++ { ++ Mutex lock(&gDefaultLocaleMutex); ++ if (gDefaultLocale != NULL) { ++ return *gDefaultLocale; ++ } + } +- return *retLocale; ++ UErrorCode status = U_ZERO_ERROR; ++ return *locale_set_default_internal(NULL, status); + } + + +@@ -692,7 +624,7 @@ + * This is a convenient way to access the default locale caching mechanisms. + */ + const char *localeID = newLocale.getName(); +- locale_set_default_internal(localeID); ++ locale_set_default_internal(localeID, status); + } + + Locale U_EXPORT2 +diff -ruN icu.orig/source/common/unicode/locid.h icu/source/common/unicode/locid.h +--- icu.orig/source/common/unicode/locid.h 2012-04-05 22:46:08.000000000 +0200 ++++ icu/source/common/unicode/locid.h 2013-03-05 21:54:11.975608225 +0100 +@@ -738,7 +738,7 @@ + * A friend to allow the default locale to be set by either the C or C++ API. + * @internal + */ +- friend void locale_set_default_internal(const char *); ++ friend Locale *locale_set_default_internal(const char *, UErrorCode& status); + }; + + inline UBool diff --git a/icu.spec b/icu.spec new file mode 100644 index 0000000..bc77518 --- /dev/null +++ b/icu.spec @@ -0,0 +1,584 @@ +Name: icu +Version: 49.1.1 +Release: 8%{?dist} +Summary: International Components for Unicode +Group: Development/Tools +License: MIT and UCD and Public Domain +URL: http://www.icu-project.org/ +Source0: http://download.icu-project.org/files/icu4c/49.1.1/icu4c-49_1_1-src.tgz +Source1: icu-config.sh +BuildRequires: doxygen, autoconf, python +Requires: lib%{name} = %{version}-%{release} + +Patch1: icu.8198.revert.icu5431.patch +Patch2: icu.8800.freeserif.crash.patch +Patch3: icu.7601.Indic-ccmp.patch +Patch4: icu.9283.regexcmp.crash.patch +Patch5: gennorm2-man.patch +Patch6: gencfu-man.patch +Patch7: icuinfo-man.patch +Patch8: icu.9737.CVE-2013-0900_changesets_32865_32908.patch +Patch9: CVE-2013-0900_umutex.patch + +%description +Tools and utilities for developing with icu. + +%package -n lib%{name} +Summary: International Components for Unicode - libraries +Group: System Environment/Libraries + +%description -n lib%{name} +The International Components for Unicode (ICU) libraries provide +robust and full-featured Unicode services on a wide variety of +platforms. ICU supports the most current version of the Unicode +standard, and they provide support for supplementary Unicode +characters (needed for GB 18030 repertoire support). +As computing environments become more heterogeneous, software +portability becomes more important. ICU lets you produce the same +results across all the various platforms you support, without +sacrificing performance. It offers great flexibility to extend and +customize the supplied services. + +%package -n lib%{name}-devel +Summary: Development files for International Components for Unicode +Group: Development/Libraries +Requires: lib%{name} = %{version}-%{release} +Requires: pkgconfig + +%description -n lib%{name}-devel +Includes and definitions for developing with icu. + +%package -n lib%{name}-doc +Summary: Documentation for International Components for Unicode +Group: Documentation +BuildArch: noarch + +%description -n lib%{name}-doc +%{summary}. + +%{!?endian: %global endian %(%{__python} -c "import sys;print (0 if sys.byteorder=='big' else 1)")} +# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal + +%prep +%setup -q -n %{name} +%patch1 -p2 -R -b .icu8198.revert.icu5431.patch +%patch2 -p1 -b .icu8800.freeserif.crash.patch +%patch3 -p1 -b .icu7601.Indic-ccmp.patch +%patch4 -p1 -b .icu9283.regexcmp.crash.patch +%patch5 -p1 -b .gennorm2-man.patch +%patch6 -p1 -b .gencfu-man.patch +%patch7 -p1 -b .icuinfo-man.patch +%patch8 -p1 -b .icu9737.CVE-2013-0900_changesets_32865_32908.patch +%patch9 -p1 -b .CVE-2013-0900_umutex.patch + +%build +cd source +autoconf +CFLAGS='%optflags -fno-strict-aliasing' +CXXFLAGS='%optflags -fno-strict-aliasing' +# Endian: BE=0 LE=1 +%if ! 0%{?endian} +CPPFLAGS='-DU_IS_BIG_ENDIAN=1' +%endif +%configure --with-data-packaging=library --disable-samples +#rhbz#225896 +sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux +#rhbz#681941 +sed -i 's|^LIBS =.*|LIBS = -L../lib -licuuc -lpthread -lm|' i18n/Makefile +sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -licui18n -lc -lgcc|' io/Makefile +sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -lc|' layout/Makefile +sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -licule -lc|' layoutex/Makefile +sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../../lib -licutu -licuuc -lc|' tools/ctestfw/Makefile +sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../../lib -licui18n -licuuc -lpthread -lc|' tools/toolutil/Makefile +#rhbz#813484 +sed -i 's| \$(docfilesdir)/installdox||' Makefile +# There is no source/doc/html/search/ directory +sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile + +make %{?_smp_mflags} +make %{?_smp_mflags} doc + +%install +rm -rf $RPM_BUILD_ROOT source/__docs +make %{?_smp_mflags} -C source install DESTDIR=$RPM_BUILD_ROOT +make %{?_smp_mflags} -C source install-doc docdir=__docs +chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so.* +( + cd $RPM_BUILD_ROOT%{_bindir} + mv icu-config icu-config-%{__isa_bits} +) +install -p -m755 -D %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/icu-config + +%check +# test to ensure that -j(X>1) didn't "break" man pages. b.f.u #2357 +if grep -q @VERSION@ source/tools/*/*.8 source/tools/*/*.1 source/config/*.1; then + exit 1 +fi +make %{?_smp_mflags} -C source check + +%post -n lib%{name} -p /sbin/ldconfig + +%postun -n lib%{name} -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%{_bindir}/derb +%{_bindir}/genbrk +%{_bindir}/gencfu +%{_bindir}/gencnval +%{_bindir}/genctd +%{_bindir}/genrb +%{_bindir}/makeconv +%{_bindir}/pkgdata +%{_bindir}/uconv +%{_sbindir}/* +%{_mandir}/man1/derb.1* +%{_mandir}/man1/gencfu.1* +%{_mandir}/man1/gencnval.1* +%{_mandir}/man1/genrb.1* +%{_mandir}/man1/genbrk.1* +%{_mandir}/man1/genctd.1* +%{_mandir}/man1/makeconv.1* +%{_mandir}/man1/pkgdata.1* +%{_mandir}/man1/uconv.1* +%{_mandir}/man8/*.8* + +%files -n lib%{name} +%defattr(-,root,root,-) +%doc license.html readme.html +%{_libdir}/*.so.* + +%files -n lib%{name}-devel +%defattr(-,root,root,-) +%{_bindir}/%{name}-config* +%{_bindir}/icuinfo +%{_mandir}/man1/%{name}-config.1* +%{_mandir}/man1/icuinfo.1* +%{_includedir}/layout +%{_includedir}/unicode +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc +%{_libdir}/%{name} +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/%{version} +%{_datadir}/%{name}/%{version}/install-sh +%{_datadir}/%{name}/%{version}/mkinstalldirs +%{_datadir}/%{name}/%{version}/config +%doc %{_datadir}/%{name}/%{version}/license.html + +%files -n lib%{name}-doc +%defattr(-,root,root,-) +%doc license.html readme.html +%doc source/__docs/%{name}/html/* + +%changelog +* Wed Mar 06 2013 Eike Rathke - 49.1.1-8 +- Resolves: rhbz#918168 CVE-2013-0900 race condition allows DoS + +* Sat Feb 23 2013 Eike Rathke - 49.1.1-7 +- added manpages for gennorm2, gencfu and icuinfo, rhbz#884035 + +* Fri Jan 25 2013 Eike Rathke - 49.1.1-6 +- Resolves: rhbz#889781 big endian build breakage + +* Fri Aug 31 2012 Tom Callaway - 49.1.1-5 +- apply upstream fix (bug 9283) for regexcmp crash causing Chromium segfaults + +* Thu Jul 19 2012 Fedora Release Engineering - 49.1.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jun 15 2012 Caolán McNamara - 49.1.1-3 +- probably parallel-build safe by now. Add a check for original breakage + +* Fri Jun 15 2012 Caolán McNamara - 49.1.1-2 +- Resolves: rhbz#804313 multi-lib pain + +* Thu Apr 19 2012 Eike Rathke - 49.1.1-1 +- Update to 49.1.1 + +* Thu Apr 19 2012 Eike Rathke - 4.8.1.1-3 +- Resolves: rhbz#813484 doxygen 1.8.0 does not provide installdox, omit from install + +* Mon Jan 30 2012 Jon Masters - 4.8.1.1-2 +- Correct reference to BZ681941, add temporary fix for ARM FTBFS side effect + +* Fri Jan 20 2012 Peter Robinson -4.8.1.1-1 +- Update to 4.8.1.1 + +* Fri Jan 13 2012 Fedora Release Engineering - 4.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 13 2011 Eike Rathke - 4.8.1-3 +- Resolves: rhbz#766542 CVE-2011-4599 Stack-based buffer overflow +- add icu.8984.CVE-2011-4599.patch + +* Mon Oct 24 2011 Caolán McNamara - 4.8.1-2 +- Resolves: rhbz#747193 try and enable ccmp for Indic fonts + +* Wed Sep 07 2011 Caolán McNamara - 4.8.1-1 +- Resolves: rhbz#681941 don't link unneccessary -lm, etc. +- add icu.8800.freeserif.crash.patch + +* Tue Mar 08 2011 Caolán McNamara - 4.6-2 +- Resolves: rhbz#681941 don't link unneccessary -lm, etc. + +* Mon Mar 07 2011 Caolán McNamara - 4.6-1 +- latest version +- upgrade includes a .pc now of its own, drop ours +- drop integrated icu.6995.kannada.patch +- drop integrated icu.7971.buildfix.patch +- drop integrated icu.7972.buildfix.patch +- drop integrated icu.7932.doublecompare.patch +- drop integrated icu.8011.buildfix.patch + +* Fri Feb 11 2011 Caolán McNamara - 4.4.2-8 +- Resolves: rhbz#674328 yet more ways that freeserif crashes libicu + +* Wed Feb 09 2011 Fedora Release Engineering - 4.4.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Feb 03 2011 Caolán McNamara - 4.4.2-6 +- Resolves: rhbz#674328 more ways that freeserif crashes libicu + +* Wed Feb 02 2011 Caolán McNamara - 4.4.2-5 +- Resolves: rhbz#674328 freeserif crashes libicu + +* Thu Jan 13 2011 Caolán McNamara - 4.4.2-4 +- Resolves: rhbz#669237 strip libicudata + +* Mon Nov 29 2010 Caolán McNamara - 4.4.2-3 +- Resolves: rhbz#657964 icu-config bindir returns sbindir + +* Thu Nov 25 2010 Caolán McNamara - 4.4.2-2 +- Resolves: rhbz#654200 revert icu#5431 + +* Mon Oct 04 2010 Caolán McNamara - 4.4.2-1 +- latest version + +* Wed Sep 29 2010 jkeating - 4.4.1-6 +- Rebuilt for gcc bug 634757 + +* Wed Sep 22 2010 Caolán McNamara - 4.4.1-5 +- upstream patches + +* Thu Sep 09 2010 Caolán McNamara - 4.4.1-4 +- Resolves: rhbz#631403 doxygen no longer generates gifs + +* Thu Jul 08 2010 Caolán McNamara - 4.4.1-3 +- move licences into libicu, and add them into the -doc subpackage + as well + +* Wed May 26 2010 Caolán McNamara - 4.4.1-2 +- Resolves: rhbz#596171 drop icu.icu6284.strictalias.patch and use + -fno-strict-aliasig as upstream has added a pile more and doesn't look + interested in proposed patchs + +* Thu Apr 29 2010 Caolán McNamara - 4.4.1-1 +- latest version +- drop integrated icu.icu7567.libctest.patch + +* Fri Apr 02 2010 Caolán McNamara - 4.4-1 +- latest version +- drop integrated icu.6969.pkgdata.patch +- drop integrated icu.icu7039.badextract.patch +- drop integrated icu.XXXX.buildfix.patch + +* Wed Dec 02 2009 Caolán McNamara - 4.2.1-8 +- Resolves: rhbz#543386 update icu-config + +* Thu Nov 19 2009 Caolán McNamara - 4.2.1-7 +- Fix FTBFS with yet another autoconf version that changes + behaviour + +* Mon Aug 31 2009 Caolán McNamara - 4.2.1-6 +- Resolves: rhbz#520468 fix s390x and other secondary archs + +* Tue Jul 28 2009 Caolán McNamara - 4.2.1-5 +- icu#7039 fix broken use of extract to get tests working + +* Fri Jul 24 2009 Fedora Release Engineering - 4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jul 22 2009 Caolán McNamara - 4.2.1-3 +- make documentation noarch + +* Tue Jul 14 2009 Caolán McNamara - 4.2.1-2 +- rpmlint warnings + +* Fri Jul 03 2009 Caolán McNamara - 4.2.1-1 +- 4.2.1 release + +* Fri Jun 26 2009 Caolán McNamara - 4.2.0.1-3 +- Resolves: rhbz#508288 multilib conflict + +* Thu Jun 11 2009 Caolán McNamara - 4.2.0.1-2 +- Resolves: rhbz#505252 add icu.6995.kannada.patch + +* Mon Jun 08 2009 Caolán McNamara - 4.2.0.1-1 +- 4.2.0.1 release + +* Sat May 09 2009 Caolán McNamara - 4.2-1 +- 4.2 release + +* Sun May 03 2009 Caolán McNamara - 4.2-0.1.d03 +- 4.2 release candidate +- drop resolved icu.icu6008.arm.padding.patch +- drop resolved icu.icu6439.bare.elif.patch + +* Tue Feb 24 2009 Fedora Release Engineering - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Feb 03 2009 Caolán McNamara - 4.0.1-2 +- fix bare elif for gcc-4.4 + +* Fri Jan 16 2009 Caolán McNamara - 4.0.1-1 +- 4.0.1 release + +* Mon Dec 29 2008 Caolán McNamara - 4.0-6 +- Resolves rhbz#225896 clean up low hanging rpmlint warnings + +* Tue Dec 16 2008 Caolán McNamara - 4.0-5 +- drop integrated icu.icu5557.safety.patch + +* Thu Nov 20 2008 Caolán McNamara - 4.0-4 +- annoyingly upstream tarball was repacked apparently to remove + some unused/cached dirs + +* Sat Sep 06 2008 Caolán McNamara - 4.0-3 +- Resolves: rhbz#461348 wrong icu-config + +* Tue Aug 26 2008 Caolán McNamara - 4.0-2 +- Resolves: rhbz#459698 drop Malayalam patches. Note test with Rachana/Meera + instead of Lohit Malayalam before filing bugs against icu wrt. + Malayalam rendering + +* Sat Jul 05 2008 Caolán McNamara - 4.0-1 +- final release + +* Mon Jun 30 2008 Caolán McNamara - 4.0-0.3.d03 +- 4.0 release candidate + +* Wed Jun 04 2008 Caolán McNamara - 4.0-0.2.d02 +- drop icu.icu5498.openoffice.org.patch + +* Sun May 31 2008 Caolán McNamara - 4.0-0.1.d02 +- 4.0 release candidate +- drop integrated icu.regexp.patch + +* Mon May 19 2008 Caolán McNamara - 3.8.1-8 +- add icu.icu6284.strictalias.patch and build with + strict-aliasing + +* Tue Mar 18 2008 Caolán McNamara - 3.8.1-7 +- Resolves: rhbz#437761 modify to icu.icu6213.worstcase.patch for + other worst case expansions + +* Mon Mar 17 2008 Caolán McNamara - 3.8.1-6 +- Resolves: rhbz#437761 add icu.icu6213.bengali.worstcase.patch + +* Mon Feb 04 2008 Caolán McNamara - 3.8.1-5 +- Resolves: rhbz#431401 split syllables on 1st 0d4d of a 0d4d + + (>= 0d15 && <= 0d39) + 0d4d + 0d30 sequence + +* Thu Jan 31 2008 Caolán McNamara - 3.8.1-4 +- Resolves: rhbz#431029, rhbz#424661 Remove workaround for 0D31 characters + +* Fri Jan 25 2008 Caolán McNamara - 3.8.1-3 +- CVE-2007-4770 CVE-2007-4771 add icu.regexp.patch +- Resolves: rhbz#423211 fix malalayam stuff in light of syllable + changes + +* Fri Jan 11 2008 Caolán McNamara - 3.8.1-2 +- remove icu.icu5365.dependantvowels.patch and cleanup + icu.icu5506.multiplevowels.patch as they patch and unpatch + eachother (thanks George Rhoten for pointing out that madness) + +* Fri Jan 11 2008 Caolán McNamara - 3.8.1-1 +- latest version +- drop fixed icu.icu6084.zwnj.notdef.patch + +* Thu Dec 13 2007 Caolán McNamara - 3.8-6 +- Resolves: rhbz#423211 experimental hack for 0d15+0d4d+0d30 + +* Tue Dec 11 2007 Caolán McNamara - 3.8-5 +- Resolves: rhbz#415541 icu.icu6084.zwnj.notdef.patch + +* Wed Nov 28 2007 Caolán McNamara - 3.8-4 +- Resolves: ooo#83991 Malayalam "Kartika" font fix + +* Tue Nov 13 2007 Caolán McNamara - 3.8-3 +- add icu.openoffice.org.patch + +* Sat Oct 27 2007 Caolán McNamara - 3.8-2 +- add icu.icu6008.arm.padding.patch to fix an arm problem + +* Tue Oct 02 2007 Caolán McNamara - 3.8-1 +- latest version + +* Mon Sep 03 2007 Caolán McNamara - 3.8-0.2.d02 +- next release candidate + +* Wed Aug 29 2007 Caolán McNamara - 3.8-0.2.d01 +- rebuild + +* Tue Aug 07 2007 Caolán McNamara - 3.8-0.1.d01 +- 3.8 release candidate +- drop integrated icu.icu5433.oriya.patch +- drop integrated icu.icu5488.assamese.patch +- drop integrated icu.icu5500.devicetablecrash.patch +- drop integrated icu.icu5501.sinhala.biggerexpand.patch +- drop integrated icu.icu5594.gujarati.patch +- drop integrated icu.icu5465.telegu.patch + +* Wed Jun 13 2007 Caolán McNamara - 3.6-20 +- Resolves: rhbz#243984 change the icu group as it is libicu + which is "System Environment/Libraries" not icu + +* Mon Apr 30 2007 Caolán McNamara - 3.6-19 +- Resolves: rhbz#220867 Malayalam rendering + +* Tue Feb 13 2007 Caolán McNamara - 3.6-18 +- Resolves: rhbz#228457 icu.icu5594.gujarati.patch + +* Mon Feb 09 2007 Caolán McNamara - 3.6-17 +- spec cleanups + +* Mon Feb 05 2007 Caolán McNamara - 3.6-16 +- Resolves: rhbz#226949 layout telegu like pango + +* Fri Jan 19 2007 Caolán McNamara - 3.6-15 +- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch + +* Thu Jan 09 2007 Caolán McNamara - 3.6-14 +- Related: rhbz#216089 add icu.icu5557.safety.patch + +* Thu Dec 21 2006 Caolán McNamara - 3.6-13 +- Resolves: rhbz#220433 modify icu.icu5431.malayam.patch + +* Fri Nov 10 2006 Caolán McNamara - 3.6-12 +- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch + +* Wed Nov 08 2006 Caolán McNamara - 3.6-11 +- Resolves: rhbz#214555 icu.icu5501.sinhala.biggerexpand.patch + +* Wed Nov 08 2006 Caolán McNamara - 3.6-10 +- Resolves: rhbz#214555 icu.icu5500.devicetablecrash.patch + +* Thu Oct 18 2006 Caolán McNamara - 3.6-9 +- Resolves: rhbz#213648 extend prev/next to handle ZWJ + +* Tue Oct 18 2006 Caolán McNamara - 3.6-8 +- Resolves: rhbz213375 (icu.icu5488.assamese.patch) + +* Tue Oct 18 2006 Caolán McNamara - 3.6-7 +- Resolves: rhbz#211258 (icu.icu5465.telegu.patch) + +* Thu Oct 05 2006 Caolán McNamara - 3.6-6 +- rh#209391# add icu.icuXXXX.virama.prevnext.patch + +* Mon Oct 02 2006 Caolán McNamara - 3.6-5 +- rh#208705# add pkg-config Require for -devel package +- add icu.icu5431.malayam.patch for rh#208551#/rh#209084# +- add icu.icu5433.oriya.patch for rh#208559#/rh#209083# + +* Sun Oct 01 2006 Jesse Keating - 3.6-4 +- rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Mon Sep 25 2006 Caolán McNamara - 3.6-3 +- rh#206615# render malayam like pango + +* Wed Sep 06 2006 Caolán McNamara - 3.6-2 +- fix rh#205252#/icu#5365 (gnome#121882#/#icu#4026#) to make icu + like pango for multiple dependant vowels + +* Mon Sep 03 2006 Caolán McNamara - 3.6-1 +- final release + +* Mon Aug 14 2006 Caolán McNamara - 3.6-0.1.d02 +- bump + +* Tue Aug 08 2006 Caolán McNamara - 3.6-0.2.d01 +- c++ code not alias correct + +* Mon Jul 31 2006 Caolán McNamara - 3.6-0.1.d01 +- rh#200728# update to prelease 3.6d01 to pick up on sinhala fixes +- drop integrated rh190879.patch +- drop integrated icu-3.4-sinhala1.patch + +* Wed Jul 12 2006 Jesse Keating - 3.4-10.1.1 +- rebuild + +* Wed Jul 12 2006 Jesse Keating - 3.4-10.1 +- rebuild + +* Sat Jun 10 2006 Caolán McNamara - 3.4-10 +- rh#194686# BuildRequires + +* Tue May 09 2006 Caolán McNamara - 3.4-9 +- rh#190879# backport fix + +* Wed May 03 2006 Caolán McNamara - 3.4-8 +- add Harshula's icu-3.4-sinhala1.patch for some Sinhala support + +* Tue May 02 2006 Caolán McNamara - 3.4-7 +- add a pkgconfig.pc, make icu-config use it + +* Fri Feb 10 2006 Jesse Keating - 3.4-6.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 3.4-6.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Tue Jan 03 2006 Caolán McNamara - 3.4-6 +- add icu-gcc41.patch + +* Tue Oct 11 2005 Caolán McNamara - 3.4-5 +- clear execstack requirement for libicudata + +* Mon Sep 12 2005 Caolán McNamara - 3.4-4 +- import extra icu.spec into fedora core for openoffice.org +- build with gcc 4 + +* Wed Aug 31 2005 Thorsten Leemhuis - 3.4-3 +- Use dist +- gcc32 does not understand -fstack-protector and + --param=ssp-buffer-size=4 + +* Tue Aug 2 2005 Ville Skyttä - 3.4-2 +- 3.4. + +* Sun Jul 31 2005 Ville Skyttä - 3.4-0.2.d02 +- 3.4-d02. +- Don't ship static libraries. + +* Wed Apr 27 2005 Ville Skyttä - 3.2-3 +- Apply upstream case mapping mutex lock removal patch. +- Build with gcc 3.2 as a temporary workaround for #152495. + +* Fri Apr 7 2005 Michael Schwendt - 3.2-2 +- rebuilt + +* Sat Jan 1 2005 Ville Skyttä - 3.2-1 +- Don't use %%{_smp_mflags} (b.f.u #2357). +- Remove unnecessary Epochs. + +* Sat Dec 4 2004 Ville Skyttä - 0:3.2-0.fdr.1 +- Update to 3.2. + +* Sun Jul 18 2004 Ville Skyttä - 0:3.0-0.fdr.1 +- Update to 3.0, datadirs patch no longer needed. +- Package data in shared libs, drop -locales subpackage. +- Rename -docs subpackage to libicu-doc, and generate graphs with graphviz. + +* Sat Dec 13 2003 Ville Skyttä - 0:2.6.1-0.fdr.3 +- Partial fix for bad datadirs returned by icu-config (works as long as + data packaging mode is not "common" or "dll"). + +* Sun Nov 23 2003 Ville Skyttä - 0:2.6.1-0.fdr.2 +- First complete version. + +* Sun Sep 28 2003 Ville Skyttä - 0:2.6.1-0.fdr.1 +- Update to 2.6.1. + +* Wed Aug 27 2003 Ville Skyttä - 0:2.6-0.fdr.1 +- First build, based on upstream and SuSE 8.2 packages. diff --git a/icuinfo-man.patch b/icuinfo-man.patch new file mode 100644 index 0000000..317eece --- /dev/null +++ b/icuinfo-man.patch @@ -0,0 +1,143 @@ +Description: supply manual page for program that doesn't have one +Author: Jay Berkenbilt +Bug: http://bugs.icu-project.org/trac/ticket/7665 + +diff -r -u -N icu.orig/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in +--- icu.orig/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100 ++++ icu/source/tools/icuinfo/icuinfo.1.in 2013-02-23 01:33:16.850591999 +0100 +@@ -0,0 +1,76 @@ ++.\" Hey, Emacs! This is -*-nroff-*- you know... ++.\" ++.\" icuinfo.1: manual page for the icuinfo utility ++.\" ++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others ++.\" ++.TH ICUINFO 1 "1 May 2010" "ICU MANPAGE" "ICU @VERSION@ Manual" ++.SH NAME ++.B icuinfo ++\- Shows some basic info about the current ICU ++.SH SYNOPSIS ++.B icuinfo ++[ ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++] ++[ ++.BR "\-V\fP, \fB\-\-version" ++] ++[ ++.BR "\-c\fP, \fB\-\-copyright" ++] ++[ ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++] ++[ ++.BR "\-v\fP, \fB\-\-verbose" ++] ++[ ++.BI "\-L\fP, \fB\-\-list-plugins" ++] ++[ ++.BI "\-m\fP, \fB\-\-milisecond-time" ++] ++[ ++.BI "\-K\fP, \fB\-\-cleanup" ++] ++.SH DESCRIPTION ++.B icuinfo ++prints basic information about the current version of ICU. ++.SH OPTIONS ++.TP ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++Print help about usage and exit. ++.TP ++.BR "\-V\fP, \fB\-\-version" ++Print the version of ++.B icuinfo ++and exit. ++.TP ++.BR "\-c\fP, \fB\-\-copyright" ++Embeds the standard ICU copyright into the ++.IR output-file . ++.TP ++.BR "\-v\fP, \fB\-\-verbose" ++Display extra informative messages during execution. ++.TP ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++Look for any necessary ICU data files in ++.IR directory . ++For example, the file ++.B pnames.icu ++must be located when ICU's data is not built as a shared library. ++The default ICU data directory is specified by the environment variable ++.BR ICU_DATA . ++Most configurations of ICU do not require this argument. ++.TP ++.BI "\-L\fP, \fB\-\-list-plugins" ++If specified, list and diagnose issues with ICU plugins. ++.TP ++.BI "\-K\fP, \fB\-\-cleanup" ++Attempt to unload plugins before exiting. ++.TP ++.BI "\-m\fP, \fB\-\-milisecond-time" ++Print the current UTC time in milliseconds. ++.SH COPYRIGHT ++Copyright (C) 2010 International Business Machines Corporation and others +diff -r -u -N icu.orig/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in +--- icu.orig/source/tools/icuinfo/Makefile.in 2012-04-05 22:46:24.000000000 +0200 ++++ icu/source/tools/icuinfo/Makefile.in 2013-02-23 01:33:16.850591999 +0100 +@@ -14,8 +14,15 @@ + ## Build directory information + subdir = tools/icuinfo + ++TARGET_STUB_NAME = icuinfo ++ ++SECTION = 1 ++ ++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) ++ ++ + ## Extra files to remove for 'make clean' +-CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) ++CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) $(MAN_FILES) + + ## Target information + TARGET = icuinfo$(EXEEXT) +@@ -35,7 +42,8 @@ + + ## List of phony targets + .PHONY : all all-local install install-local clean clean-local \ +-distclean distclean-local dist dist-local check check-local plugin-check ++distclean distclean-local dist dist-local check check-local plugin-check \ ++install-man + + ## Clear suffix list + .SUFFIXES : +@@ -48,12 +56,16 @@ + dist: dist-local + check: all check-local + +-all-local: $(TARGET) ++all-local: $(TARGET) $(MAN_FILES) + +-install-local: all-local ++install-local: all-local install-man + $(MKINSTALLDIRS) $(DESTDIR)$(bindir) + $(INSTALL) $(TARGET) $(DESTDIR)$(bindir) + ++install-man: $(MAN_FILES) ++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) ++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) ++ + dist-local: + + clean-local: +@@ -95,6 +107,9 @@ + plugin-check: $(PLUGIN) $(PLUGINFILE) + $(INVOKE) ICU_PLUGINS="$(CURR_FULL_DIR)" ./$(TARGET) -v -L + ++%.$(SECTION): $(srcdir)/%.$(SECTION).in ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + ifeq (,$(MAKECMDGOALS)) + -include $(DEPS) -- cgit