diff options
author | Remi Collet <fedora@famillecollet.com> | 2013-03-20 10:45:46 +0100 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2013-03-20 10:45:46 +0100 |
commit | 3f927a7f3bb6554cab83c2c0ae8aa2cae01b80cb (patch) | |
tree | 17babf44c0254214dd3ded64c6736c675a1b72a4 | |
parent | 6c5565b8d501c25466d2b3977d4156204cb4be10 (diff) |
icu: drop this version
-rw-r--r-- | CVE-2013-0900_umutex.patch | 12 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | gencfu-man.patch | 122 | ||||
-rw-r--r-- | gennorm2-man.patch | 128 | ||||
-rw-r--r-- | icu-config.sh | 11 | ||||
-rw-r--r-- | icu.7601.Indic-ccmp.patch | 43 | ||||
-rw-r--r-- | icu.8198.revert.icu5431.patch | 129 | ||||
-rw-r--r-- | icu.8800.freeserif.crash.patch | 14 | ||||
-rw-r--r-- | icu.9283.regexcmp.crash.patch | 36 | ||||
-rw-r--r-- | icu.9737.CVE-2013-0900_changesets_32865_32908.patch | 291 | ||||
-rw-r--r-- | icu.spec | 6 | ||||
-rw-r--r-- | icuinfo-man.patch | 143 |
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 @@ -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) |