From 3f927a7f3bb6554cab83c2c0ae8aa2cae01b80cb Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 20 Mar 2013 10:45:46 +0100 Subject: icu: drop this version --- CVE-2013-0900_umutex.patch | 12 - Makefile | 4 + gencfu-man.patch | 122 --------- gennorm2-man.patch | 128 --------- icu-config.sh | 11 - icu.7601.Indic-ccmp.patch | 43 --- icu.8198.revert.icu5431.patch | 129 --------- icu.8800.freeserif.crash.patch | 14 - icu.9283.regexcmp.crash.patch | 36 --- ...9737.CVE-2013-0900_changesets_32865_32908.patch | 291 --------------------- icu.spec | 6 + icuinfo-man.patch | 143 ---------- 12 files changed, 10 insertions(+), 929 deletions(-) delete mode 100644 CVE-2013-0900_umutex.patch create mode 100644 Makefile delete mode 100644 gencfu-man.patch delete mode 100644 gennorm2-man.patch delete mode 100644 icu-config.sh delete mode 100644 icu.7601.Indic-ccmp.patch delete mode 100644 icu.8198.revert.icu5431.patch delete mode 100644 icu.8800.freeserif.crash.patch delete mode 100644 icu.9283.regexcmp.crash.patch delete mode 100644 icu.9737.CVE-2013-0900_changesets_32865_32908.patch delete mode 100644 icuinfo-man.patch 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 -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 -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 - 49.1.1-8 +- backport for remi repo for EL-5 + * Wed Mar 06 2013 Eike Rathke - 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 -Bug: http://bugs.icu-project.org/trac/ticket/7665 - -diff -r -u -N icu.orig/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in ---- icu.orig/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100 -+++ icu/source/tools/icuinfo/icuinfo.1.in 2013-02-23 01:33:16.850591999 +0100 -@@ -0,0 +1,76 @@ -+.\" Hey, Emacs! This is -*-nroff-*- you know... -+.\" -+.\" icuinfo.1: manual page for the icuinfo utility -+.\" -+.\" Copyright (C) 2005-2006 International Business Machines Corporation and others -+.\" -+.TH ICUINFO 1 "1 May 2010" "ICU MANPAGE" "ICU @VERSION@ Manual" -+.SH NAME -+.B icuinfo -+\- Shows some basic info about the current ICU -+.SH SYNOPSIS -+.B icuinfo -+[ -+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" -+] -+[ -+.BR "\-V\fP, \fB\-\-version" -+] -+[ -+.BR "\-c\fP, \fB\-\-copyright" -+] -+[ -+.BI "\-i\fP, \fB\-\-icudatadir" " directory" -+] -+[ -+.BR "\-v\fP, \fB\-\-verbose" -+] -+[ -+.BI "\-L\fP, \fB\-\-list-plugins" -+] -+[ -+.BI "\-m\fP, \fB\-\-milisecond-time" -+] -+[ -+.BI "\-K\fP, \fB\-\-cleanup" -+] -+.SH DESCRIPTION -+.B icuinfo -+prints basic information about the current version of ICU. -+.SH OPTIONS -+.TP -+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" -+Print help about usage and exit. -+.TP -+.BR "\-V\fP, \fB\-\-version" -+Print the version of -+.B icuinfo -+and exit. -+.TP -+.BR "\-c\fP, \fB\-\-copyright" -+Embeds the standard ICU copyright into the -+.IR output-file . -+.TP -+.BR "\-v\fP, \fB\-\-verbose" -+Display extra informative messages during execution. -+.TP -+.BI "\-i\fP, \fB\-\-icudatadir" " directory" -+Look for any necessary ICU data files in -+.IR directory . -+For example, the file -+.B pnames.icu -+must be located when ICU's data is not built as a shared library. -+The default ICU data directory is specified by the environment variable -+.BR ICU_DATA . -+Most configurations of ICU do not require this argument. -+.TP -+.BI "\-L\fP, \fB\-\-list-plugins" -+If specified, list and diagnose issues with ICU plugins. -+.TP -+.BI "\-K\fP, \fB\-\-cleanup" -+Attempt to unload plugins before exiting. -+.TP -+.BI "\-m\fP, \fB\-\-milisecond-time" -+Print the current UTC time in milliseconds. -+.SH COPYRIGHT -+Copyright (C) 2010 International Business Machines Corporation and others -diff -r -u -N icu.orig/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in ---- icu.orig/source/tools/icuinfo/Makefile.in 2012-04-05 22:46:24.000000000 +0200 -+++ icu/source/tools/icuinfo/Makefile.in 2013-02-23 01:33:16.850591999 +0100 -@@ -14,8 +14,15 @@ - ## Build directory information - subdir = tools/icuinfo - -+TARGET_STUB_NAME = icuinfo -+ -+SECTION = 1 -+ -+MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) -+ -+ - ## Extra files to remove for 'make clean' --CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) -+CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) $(MAN_FILES) - - ## Target information - TARGET = icuinfo$(EXEEXT) -@@ -35,7 +42,8 @@ - - ## List of phony targets - .PHONY : all all-local install install-local clean clean-local \ --distclean distclean-local dist dist-local check check-local plugin-check -+distclean distclean-local dist dist-local check check-local plugin-check \ -+install-man - - ## Clear suffix list - .SUFFIXES : -@@ -48,12 +56,16 @@ - dist: dist-local - check: all check-local - --all-local: $(TARGET) -+all-local: $(TARGET) $(MAN_FILES) - --install-local: all-local -+install-local: all-local install-man - $(MKINSTALLDIRS) $(DESTDIR)$(bindir) - $(INSTALL) $(TARGET) $(DESTDIR)$(bindir) - -+install-man: $(MAN_FILES) -+ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) -+ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) -+ - dist-local: - - clean-local: -@@ -95,6 +107,9 @@ - plugin-check: $(PLUGIN) $(PLUGINFILE) - $(INVOKE) ICU_PLUGINS="$(CURR_FULL_DIR)" ./$(TARGET) -v -L - -+%.$(SECTION): $(srcdir)/%.$(SECTION).in -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - ifeq (,$(MAKECMDGOALS)) - -include $(DEPS) -- cgit