From: Shane Carr Date: Sat, 28 Apr 2018 05:50:52 +0000 (+0000) Subject: ICU-12052 Adding test case for null-pointer bug in unum_parseDoubleCurrency. X-Git-Tag: release-62-rc~181 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae665d87ef87eda288de4d6eca3679bf0c309063;p=icu ICU-12052 Adding test case for null-pointer bug in unum_parseDoubleCurrency. X-SVN-Rev: 41289 --- diff --git a/icu4c/source/test/cintltst/cnumtst.c b/icu4c/source/test/cintltst/cnumtst.c index 46b8a762a1d..649789e5ca0 100644 --- a/icu4c/source/test/cintltst/cnumtst.c +++ b/icu4c/source/test/cintltst/cnumtst.c @@ -65,6 +65,7 @@ static void TestVariousStylesAndAttributes(void); static void TestParseCurrPatternWithDecStyle(void); static void TestFormatForFields(void); static void TestRBNFRounding(void); +static void Test12052_NullPointer(void); #define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x) @@ -97,6 +98,7 @@ void addNumForTest(TestNode** root) TESTCASE(TestVariousStylesAndAttributes); TESTCASE(TestParseCurrPatternWithDecStyle); TESTCASE(TestFormatForFields); + TESTCASE(Test12052_NullPointer); } /* test Parse int 64 */ @@ -3067,4 +3069,17 @@ static void TestFormatForFields(void) { } } +static void Test12052_NullPointer() { + UErrorCode status = U_ZERO_ERROR; + static const UChar input[] = u"199a"; + UChar currency[200] = {0}; + UNumberFormat *theFormatter = unum_open(UNUM_CURRENCY, NULL, 0, "en_US", NULL, &status); + status = U_ZERO_ERROR; + unum_setAttribute(theFormatter, UNUM_LENIENT_PARSE, 1); + int32_t pos = 1; + unum_parseDoubleCurrency(theFormatter, input, -1, &pos, currency, &status); + assertEquals("should fail gracefully", "U_PARSE_ERROR", u_errorName(status)); + unum_close(theFormatter); +} + #endif /* #if !UCONFIG_NO_FORMATTING */