summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CVE-2013-0900_umutex.patch12
-rw-r--r--Makefile4
-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.spec6
-rw-r--r--icuinfo-man.patch143
12 files changed, 10 insertions, 929 deletions
diff --git a/CVE-2013-0900_umutex.patch b/CVE-2013-0900_umutex.patch
deleted file mode 100644
index 82eced7..0000000
--- a/CVE-2013-0900_umutex.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-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/Makefile b/Makefile
new file mode 100644
index 0000000..1e65467
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../common/Makefile
+
diff --git a/gencfu-man.patch b/gencfu-man.patch
deleted file mode 100644
index ecb965c..0000000
--- a/gencfu-man.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-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
deleted file mode 100644
index 846432c..0000000
--- a/gennorm2-man.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-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
deleted file mode 100644
index df2089d..0000000
--- a/icu-config.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/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
deleted file mode 100644
index 328a285..0000000
--- a/icu.7601.Indic-ccmp.patch
+++ /dev/null
@@ -1,43 +0,0 @@
---- 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
deleted file mode 100644
index 4c3e78b..0000000
--- a/icu.8198.revert.icu5431.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-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
deleted file mode 100644
index c2e0be6..0000000
--- a/icu.8800.freeserif.crash.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-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
deleted file mode 100644
index 9cf7e3e..0000000
--- a/icu.9283.regexcmp.crash.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- 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
deleted file mode 100644
index 0dc7476..0000000
--- a/icu.9737.CVE-2013-0900_changesets_32865_32908.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-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
index bc77518..f76002d 100644
--- a/icu.spec
+++ b/icu.spec
@@ -7,7 +7,10 @@ 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
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
BuildRequires: doxygen, autoconf, python
+
Requires: lib%{name} = %{version}-%{release}
Patch1: icu.8198.revert.icu5431.patch
@@ -172,6 +175,9 @@ make %{?_smp_mflags} -C source check
%doc source/__docs/%{name}/html/*
%changelog
+* Wed Mar 20 2013 Remi Collet <RPMS@famillecollet.com> - 49.1.1-8
+- backport for remi repo for EL-5
+
* Wed Mar 06 2013 Eike Rathke <erack@redhat.com> - 49.1.1-8
- Resolves: rhbz#918168 CVE-2013-0900 race condition allows DoS
diff --git a/icuinfo-man.patch b/icuinfo-man.patch
deleted file mode 100644
index 317eece..0000000
--- a/icuinfo-man.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-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)