From ed970751efe96e47540b645192f5ad46e16d6670 Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Mon, 8 Jan 2024 18:48:59 -0800 Subject: [PATCH] ICU-22520 Add test case for oss-fuzz issue #65635. --- icu4c/source/test/intltest/dtfmttst.cpp | 12 ++++++++++++ icu4c/source/test/intltest/dtfmttst.h | 1 + 2 files changed, 13 insertions(+) diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp index 681e5d65497..037edd0002d 100644 --- a/icu4c/source/test/intltest/dtfmttst.cpp +++ b/icu4c/source/test/intltest/dtfmttst.cpp @@ -136,6 +136,7 @@ void DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &nam TESTCASE_AUTO(TestHourCycle); TESTCASE_AUTO(TestHCInLocale); TESTCASE_AUTO(TestBogusLocale); + TESTCASE_AUTO(TestLongLocale); TESTCASE_AUTO_END; } @@ -5885,6 +5886,17 @@ void DateFormatTest::TestBogusLocale() { Locale("notalanguage"))); } +void DateFormatTest::TestLongLocale() { + IcuTestErrorCode status(*this, "TestLongLocale"); + LocalPointer df; + + // This should not cause a crash + std::string s(1023, ' '); + s[1] = '-'; + df.adoptInstead(DateFormat::createDateTimeInstance(DateFormat::kDateTime, DateFormat::kMedium, + Locale(s.c_str()))); +} + void DateFormatTest::TestHCInLocale() { IcuTestErrorCode status(*this, "TestHCInLocale"); LocalPointer midnight(Calendar::createInstance(status)); diff --git a/icu4c/source/test/intltest/dtfmttst.h b/icu4c/source/test/intltest/dtfmttst.h index 4c44929b27c..d967f4004e2 100644 --- a/icu4c/source/test/intltest/dtfmttst.h +++ b/icu4c/source/test/intltest/dtfmttst.h @@ -271,6 +271,7 @@ public: void TestHourCycle(); void TestHCInLocale(); void TestBogusLocale(); + void TestLongLocale(); private: UBool showParse(DateFormat &format, const UnicodeString &formattedString);