summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2013-03-20 10:37:10 +0100
committerRemi Collet <fedora@famillecollet.com>2013-03-20 10:37:10 +0100
commit6c5565b8d501c25466d2b3977d4156204cb4be10 (patch)
tree612b775a5478767a6a4520b5b527d86fcb60a488
icu: import from F18
-rw-r--r--CVE-2013-0900_umutex.patch12
-rw-r--r--gencfu-man.patch122
-rw-r--r--gennorm2-man.patch128
-rw-r--r--icu-config.sh11
-rw-r--r--icu.7601.Indic-ccmp.patch43
-rw-r--r--icu.8198.revert.icu5431.patch129
-rw-r--r--icu.8800.freeserif.crash.patch14
-rw-r--r--icu.9283.regexcmp.crash.patch36
-rw-r--r--icu.9737.CVE-2013-0900_changesets_32865_32908.patch291
-rw-r--r--icu.spec584
-rw-r--r--icuinfo-man.patch143
11 files changed, 1513 insertions, 0 deletions
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 <qjb@debian.org>
+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 <qjb@debian.org>
+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 <erack@redhat.com> - 49.1.1-8
+- Resolves: rhbz#918168 CVE-2013-0900 race condition allows DoS
+
+* Sat Feb 23 2013 Eike Rathke <erack@redhat.com> - 49.1.1-7
+- added manpages for gennorm2, gencfu and icuinfo, rhbz#884035
+
+* Fri Jan 25 2013 Eike Rathke <erack@redhat.com> - 49.1.1-6
+- Resolves: rhbz#889781 big endian build breakage
+
+* Fri Aug 31 2012 Tom Callaway <spot@fedoraproject.org> - 49.1.1-5
+- apply upstream fix (bug 9283) for regexcmp crash causing Chromium segfaults
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 49.1.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Fri Jun 15 2012 Caolán McNamara <caolanm@redhat.com> - 49.1.1-3
+- probably parallel-build safe by now. Add a check for original breakage
+
+* Fri Jun 15 2012 Caolán McNamara <caolanm@redhat.com> - 49.1.1-2
+- Resolves: rhbz#804313 multi-lib pain
+
+* Thu Apr 19 2012 Eike Rathke <erack@redhat.com> - 49.1.1-1
+- Update to 49.1.1
+
+* Thu Apr 19 2012 Eike Rathke <erack@redhat.com> - 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 <jcm@jonmasters.org> - 4.8.1.1-2
+- Correct reference to BZ681941, add temporary fix for ARM FTBFS side effect
+
+* Fri Jan 20 2012 Peter Robinson <pbrobinson@fedoraproject.org> -4.8.1.1-1
+- Update to 4.8.1.1
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Dec 13 2011 Eike Rathke <erack@redhat.com> - 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 <caolanm@redhat.com> - 4.8.1-2
+- Resolves: rhbz#747193 try and enable ccmp for Indic fonts
+
+* Wed Sep 07 2011 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.6-2
+- Resolves: rhbz#681941 don't link unneccessary -lm, etc.
+
+* Mon Mar 07 2011 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.4.2-8
+- Resolves: rhbz#674328 yet more ways that freeserif crashes libicu
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.4.2-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Feb 03 2011 Caolán McNamara <caolanm@redhat.com> - 4.4.2-6
+- Resolves: rhbz#674328 more ways that freeserif crashes libicu
+
+* Wed Feb 02 2011 Caolán McNamara <caolanm@redhat.com> - 4.4.2-5
+- Resolves: rhbz#674328 freeserif crashes libicu
+
+* Thu Jan 13 2011 Caolán McNamara <caolanm@redhat.com> - 4.4.2-4
+- Resolves: rhbz#669237 strip libicudata
+
+* Mon Nov 29 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.2-3
+- Resolves: rhbz#657964 icu-config bindir returns sbindir
+
+* Thu Nov 25 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.2-2
+- Resolves: rhbz#654200 revert icu#5431
+
+* Mon Oct 04 2010 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.4.1-5
+- upstream patches
+
+* Thu Sep 09 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.1-4
+- Resolves: rhbz#631403 doxygen no longer generates gifs
+
+* Thu Jul 08 2010 Caolán McNamara <caolanm@redhat.com> - 4.4.1-3
+- move licences into libicu, and add them into the -doc subpackage
+ as well
+
+* Wed May 26 2010 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.4.1-1
+- latest version
+- drop integrated icu.icu7567.libctest.patch
+
+* Fri Apr 02 2010 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.2.1-8
+- Resolves: rhbz#543386 update icu-config
+
+* Thu Nov 19 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-7
+- Fix FTBFS with yet another autoconf version that changes
+ behaviour
+
+* Mon Aug 31 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-6
+- Resolves: rhbz#520468 fix s390x and other secondary archs
+
+* Tue Jul 28 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-5
+- icu#7039 fix broken use of extract to get tests working
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Jul 22 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-3
+- make documentation noarch
+
+* Tue Jul 14 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-2
+- rpmlint warnings
+
+* Fri Jul 03 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.1-1
+- 4.2.1 release
+
+* Fri Jun 26 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.0.1-3
+- Resolves: rhbz#508288 multilib conflict
+
+* Thu Jun 11 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.0.1-2
+- Resolves: rhbz#505252 add icu.6995.kannada.patch
+
+* Mon Jun 08 2009 Caolán McNamara <caolanm@redhat.com> - 4.2.0.1-1
+- 4.2.0.1 release
+
+* Sat May 09 2009 Caolán McNamara <caolanm@redhat.com> - 4.2-1
+- 4.2 release
+
+* Sun May 03 2009 Caolán McNamara <caolanm@redhat.com> - 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 <rel-eng@lists.fedoraproject.org> - 4.0.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Tue Feb 03 2009 Caolán McNamara <caolanm@redhat.com> - 4.0.1-2
+- fix bare elif for gcc-4.4
+
+* Fri Jan 16 2009 Caolán McNamara <caolanm@redhat.com> - 4.0.1-1
+- 4.0.1 release
+
+* Mon Dec 29 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-6
+- Resolves rhbz#225896 clean up low hanging rpmlint warnings
+
+* Tue Dec 16 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-5
+- drop integrated icu.icu5557.safety.patch
+
+* Thu Nov 20 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-4
+- annoyingly upstream tarball was repacked apparently to remove
+ some unused/cached dirs
+
+* Sat Sep 06 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-3
+- Resolves: rhbz#461348 wrong icu-config
+
+* Tue Aug 26 2008 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 4.0-1
+- final release
+
+* Mon Jun 30 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-0.3.d03
+- 4.0 release candidate
+
+* Wed Jun 04 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-0.2.d02
+- drop icu.icu5498.openoffice.org.patch
+
+* Sun May 31 2008 Caolán McNamara <caolanm@redhat.com> - 4.0-0.1.d02
+- 4.0 release candidate
+- drop integrated icu.regexp.patch
+
+* Mon May 19 2008 Caolán McNamara <caolanm@redhat.com> - 3.8.1-8
+- add icu.icu6284.strictalias.patch and build with
+ strict-aliasing
+
+* Tue Mar 18 2008 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 3.8.1-6
+- Resolves: rhbz#437761 add icu.icu6213.bengali.worstcase.patch
+
+* Mon Feb 04 2008 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 3.8.1-4
+- Resolves: rhbz#431029, rhbz#424661 Remove workaround for 0D31 characters
+
+* Fri Jan 25 2008 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 3.8.1-1
+- latest version
+- drop fixed icu.icu6084.zwnj.notdef.patch
+
+* Thu Dec 13 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-6
+- Resolves: rhbz#423211 experimental hack for 0d15+0d4d+0d30
+
+* Tue Dec 11 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-5
+- Resolves: rhbz#415541 icu.icu6084.zwnj.notdef.patch
+
+* Wed Nov 28 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-4
+- Resolves: ooo#83991 Malayalam "Kartika" font fix
+
+* Tue Nov 13 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-3
+- add icu.openoffice.org.patch
+
+* Sat Oct 27 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-2
+- add icu.icu6008.arm.padding.patch to fix an arm problem
+
+* Tue Oct 02 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-1
+- latest version
+
+* Mon Sep 03 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-0.2.d02
+- next release candidate
+
+* Wed Aug 29 2007 Caolán McNamara <caolanm@redhat.com> - 3.8-0.2.d01
+- rebuild
+
+* Tue Aug 07 2007 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 3.6-19
+- Resolves: rhbz#220867 Malayalam rendering
+
+* Tue Feb 13 2007 Caolán McNamara <caolanm@redhat.com> - 3.6-18
+- Resolves: rhbz#228457 icu.icu5594.gujarati.patch
+
+* Mon Feb 09 2007 Caolán McNamara <caolanm@redhat.com> - 3.6-17
+- spec cleanups
+
+* Mon Feb 05 2007 Caolán McNamara <caolanm@redhat.com> - 3.6-16
+- Resolves: rhbz#226949 layout telegu like pango
+
+* Fri Jan 19 2007 Caolán McNamara <caolanm@redhat.com> - 3.6-15
+- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch
+
+* Thu Jan 09 2007 Caolán McNamara <caolanm@redhat.com> - 3.6-14
+- Related: rhbz#216089 add icu.icu5557.safety.patch
+
+* Thu Dec 21 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-13
+- Resolves: rhbz#220433 modify icu.icu5431.malayam.patch
+
+* Fri Nov 10 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-12
+- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch
+
+* Wed Nov 08 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-11
+- Resolves: rhbz#214555 icu.icu5501.sinhala.biggerexpand.patch
+
+* Wed Nov 08 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-10
+- Resolves: rhbz#214555 icu.icu5500.devicetablecrash.patch
+
+* Thu Oct 18 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-9
+- Resolves: rhbz#213648 extend prev/next to handle ZWJ
+
+* Tue Oct 18 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-8
+- Resolves: rhbz213375 (icu.icu5488.assamese.patch)
+
+* Tue Oct 18 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-7
+- Resolves: rhbz#211258 (icu.icu5465.telegu.patch)
+
+* Thu Oct 05 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-6
+- rh#209391# add icu.icuXXXX.virama.prevnext.patch
+
+* Mon Oct 02 2006 Caolán McNamara <caolanm@redhat.com> - 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 <jkeating@redhat.com> - 3.6-4
+- rebuilt for unwind info generation, broken in gcc-4.1.1-21
+
+* Mon Sep 25 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-3
+- rh#206615# render malayam like pango
+
+* Wed Sep 06 2006 Caolán McNamara <caolanm@redhat.com> - 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 <caolanm@redhat.com> - 3.6-1
+- final release
+
+* Mon Aug 14 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-0.1.d02
+- bump
+
+* Tue Aug 08 2006 Caolán McNamara <caolanm@redhat.com> - 3.6-0.2.d01
+- c++ code not alias correct
+
+* Mon Jul 31 2006 Caolán McNamara <caolanm@redhat.com> - 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 <jkeating@redhat.com> - 3.4-10.1.1
+- rebuild
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 3.4-10.1
+- rebuild
+
+* Sat Jun 10 2006 Caolán McNamara <caolanm@redhat.com> - 3.4-10
+- rh#194686# BuildRequires
+
+* Tue May 09 2006 Caolán McNamara <caolanm@redhat.com> - 3.4-9
+- rh#190879# backport fix
+
+* Wed May 03 2006 Caolán McNamara <caolanm@redhat.com> - 3.4-8
+- add Harshula's icu-3.4-sinhala1.patch for some Sinhala support
+
+* Tue May 02 2006 Caolán McNamara <caolanm@redhat.com> - 3.4-7
+- add a pkgconfig.pc, make icu-config use it
+
+* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 3.4-6.2
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 3.4-6.1
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Tue Jan 03 2006 Caolán McNamara <caolanm@redhat.com> - 3.4-6
+- add icu-gcc41.patch
+
+* Tue Oct 11 2005 Caolán McNamara <caolanm@redhat.com> - 3.4-5
+- clear execstack requirement for libicudata
+
+* Mon Sep 12 2005 Caolán McNamara <caolanm@redhat.com> - 3.4-4
+- import extra icu.spec into fedora core for openoffice.org
+- build with gcc 4
+
+* Wed Aug 31 2005 Thorsten Leemhuis <fedora at leemhuis.info> - 3.4-3
+- Use dist
+- gcc32 does not understand -fstack-protector and
+ --param=ssp-buffer-size=4
+
+* Tue Aug 2 2005 Ville Skyttä <ville.skytta at iki.fi> - 3.4-2
+- 3.4.
+
+* Sun Jul 31 2005 Ville Skyttä <ville.skytta at iki.fi> - 3.4-0.2.d02
+- 3.4-d02.
+- Don't ship static libraries.
+
+* Wed Apr 27 2005 Ville Skyttä <ville.skytta at iki.fi> - 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 <mschwendt[AT]users.sf.net> - 3.2-2
+- rebuilt
+
+* Sat Jan 1 2005 Ville Skyttä <ville.skytta at iki.fi> - 3.2-1
+- Don't use %%{_smp_mflags} (b.f.u #2357).
+- Remove unnecessary Epochs.
+
+* Sat Dec 4 2004 Ville Skyttä <ville.skytta at iki.fi> - 0:3.2-0.fdr.1
+- Update to 3.2.
+
+* Sun Jul 18 2004 Ville Skyttä <ville.skytta at iki.fi> - 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ä <ville.skytta at iki.fi> - 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ä <ville.skytta at iki.fi> - 0:2.6.1-0.fdr.2
+- First complete version.
+
+* Sun Sep 28 2003 Ville Skyttä <ville.skytta at iki.fi> - 0:2.6.1-0.fdr.1
+- Update to 2.6.1.
+
+* Wed Aug 27 2003 Ville Skyttä <ville.skytta at iki.fi> - 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 <qjb@debian.org>
+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)