From 7eaf937e26f224836869f17f21d4e8dcc07f2380 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 20 Mar 2013 10:47:46 +0100 Subject: icu: switch to 4.2.1 from RHEL-6 --- icu.icu7039.badextract.patch | 96 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 icu.icu7039.badextract.patch (limited to 'icu.icu7039.badextract.patch') diff --git a/icu.icu7039.badextract.patch b/icu.icu7039.badextract.patch new file mode 100644 index 0000000..3b27762 --- /dev/null +++ b/icu.icu7039.badextract.patch @@ -0,0 +1,96 @@ +diff -ru icu.orig/source/common/unicode/unistr.h icu/source/common/unicode/unistr.h +--- icu.orig/source/common/unicode/unistr.h 2009-07-28 16:02:03.000000000 +0100 ++++ icu/source/common/unicode/unistr.h 2009-07-28 16:36:48.000000000 +0100 +@@ -4048,7 +4048,7 @@ + + { + // This dstSize value will be checked explicitly +- return extract(start, _length, dst, dst!=0 ? 0xffffffff : 0, codepage); ++ return extract(start, _length, dst, dst!=0 ? (((size_t)dst >= ((size_t)-1) - UINT32_MAX) ? (((char*)UINT32_MAX) - dst) : UINT32_MAX) : 0, codepage); + } + + #endif +diff -ru icu.orig/source/test/intltest/dadrcal.cpp icu/source/test/intltest/dadrcal.cpp +--- icu.orig/source/test/intltest/dadrcal.cpp 2009-07-28 16:01:10.000000000 +0100 ++++ icu/source/test/intltest/dadrcal.cpp 2009-07-28 16:52:15.000000000 +0100 +@@ -114,7 +114,7 @@ + + UnicodeString(" - ")); + continue; + } +- testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)0); ++ testSetting.extract(0, testSetting.length(), toCalLoc, sizeof(toCalLoc)-1, (const char*)0); + fromCalendar = Calendar::createInstance(toCalLoc, status); + if (U_FAILURE(status)) { + errln(caseString+": Unable to instantiate calendar for " +@@ -371,7 +371,7 @@ + // build to calendar + UnicodeString testSetting = settings->getString("ToCalendar", status); + if (U_SUCCESS(status)) { +- testSetting.extract(0, testSetting.length(), toCalLoc, (const char*)0); ++ testSetting.extract(0, testSetting.length(), toCalLoc, sizeof(toCalLoc)-1, (const char*)0); + toCalendar = Calendar::createInstance(toCalLoc, status); + if (U_FAILURE(status)) { + errln("Unable to instantiate ToCalendar for "+testSetting); +@@ -394,7 +394,7 @@ + Calendar *fromCalendar= NULL; + UnicodeString locale = currentCase->getString("locale", status); + if (U_SUCCESS(status)) { +- locale.extract(0, locale.length(), fromCalLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'! ++ locale.extract(0, locale.length(), fromCalLoc, sizeof(fromCalLoc)-1, (const char*)0); // default codepage. Invariant codepage doesn't have '@'! + fromCalendar = Calendar::createInstance(fromCalLoc, status); + if (U_FAILURE(status)) { + errln("Unable to instantiate fromCalendar for "+locale); +@@ -464,7 +464,7 @@ + logln("---"); + } + logln(testSetting + "---"); +- testSetting.extract(0, testSetting.length(), testType, ""); ++ testSetting.extract(0, testSetting.length(), testType, sizeof(testType)-1, ""); + } else { + errln("Unable to extract 'Type'. Skipping.."); + continue; +diff -ru icu.orig/source/test/intltest/dadrcoll.cpp icu/source/test/intltest/dadrcoll.cpp +--- icu.orig/source/test/intltest/dadrcoll.cpp 2009-07-28 16:01:10.000000000 +0100 ++++ icu/source/test/intltest/dadrcoll.cpp 2009-07-28 16:49:56.000000000 +0100 +@@ -179,7 +179,7 @@ + testSetting = settings->getString("TestLocale", intStatus); + if(U_SUCCESS(intStatus)) { + char localeName[256]; +- testSetting.extract(0, testSetting.length(), localeName, ""); ++ testSetting.extract(0, testSetting.length(), localeName, sizeof(localeName)-1, ""); + col = Collator::createInstance(localeName, status); + if(U_SUCCESS(status)) { + logln("Testing collator for locale "+testSetting); +diff -ru icu.orig/source/test/intltest/dadrfmt.cpp icu/source/test/intltest/dadrfmt.cpp +--- icu.orig/source/test/intltest/dadrfmt.cpp 2009-07-28 16:01:10.000000000 +0100 ++++ icu/source/test/intltest/dadrfmt.cpp 2009-07-28 16:50:36.000000000 +0100 +@@ -149,7 +149,7 @@ + DateFormat *format = NULL; + + // Process: 'locale' +- locale.extract(0, locale.length(), calLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'! ++ locale.extract(0, locale.length(), calLoc, sizeof(calLoc)-1, (const char*)0); // default codepage. Invariant codepage doesn't have '@'! + Locale loc(calLoc); + if(spec.startsWith(kPATTERN)) { + pattern = UnicodeString(spec,kPATTERN.length()); +@@ -323,7 +323,7 @@ + logln("---"); + } + logln(testSetting + "---"); +- testSetting.extract(0, testSetting.length(), testType, ""); ++ testSetting.extract(0, testSetting.length(), testType, sizeof(testType)-1, ""); + } else { + errln("Unable to extract 'Type'. Skipping.."); + continue; +diff -ru icu.orig/source/test/intltest/loctest.cpp icu/source/test/intltest/loctest.cpp +--- icu.orig/source/test/intltest/loctest.cpp 2009-07-28 16:01:10.000000000 +0100 ++++ icu/source/test/intltest/loctest.cpp 2009-07-28 16:51:30.000000000 +0100 +@@ -616,7 +616,7 @@ + { + char *ch; + ch = new char[l.length() + 1]; +- ch[l.extract(0, 0x7fffffff, ch, "")] = 0; ++ ch[l.extract(0, 0x7fffffff, ch, l.length(), "")] = 0; + setFromPOSIXID(ch); + delete [] ch; + } -- cgit