mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix GH-12282: IntlDateFormatter::construct should throw an exception is the locale field has an invalid value.
Close GH-12282
This commit is contained in:
parent
4f044e9238
commit
a80db7b52a
3 changed files with 28 additions and 0 deletions
2
NEWS
2
NEWS
|
@ -18,6 +18,8 @@ PHP NEWS
|
||||||
- Intl:
|
- Intl:
|
||||||
. Fixed bug GH-12243 (segfault on IntlDateFormatter::construct).
|
. Fixed bug GH-12243 (segfault on IntlDateFormatter::construct).
|
||||||
(David Carlier)
|
(David Carlier)
|
||||||
|
. Fixed bug GH-12282 (IntlDateFormatter::construct should throw an exception
|
||||||
|
on an invalid locale). (David Carlier)
|
||||||
|
|
||||||
- PCRE:
|
- PCRE:
|
||||||
. Fixed bug GH-11956 (Backport upstream fix, PCRE regular expressions with
|
. Fixed bug GH-11956 (Backport upstream fix, PCRE regular expressions with
|
||||||
|
|
|
@ -111,6 +111,11 @@ static zend_result datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_error_handlin
|
||||||
locale_str = (char *) intl_locale_get_default();
|
locale_str = (char *) intl_locale_get_default();
|
||||||
}
|
}
|
||||||
locale = Locale::createFromName(locale_str);
|
locale = Locale::createFromName(locale_str);
|
||||||
|
/* get*Name accessors being set does not preclude being bogus */
|
||||||
|
if (locale.isBogus() || strlen(locale.getISO3Language()) == 0) {
|
||||||
|
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, "datefmt_create: invalid locale", 0);
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
/* process calendar */
|
/* process calendar */
|
||||||
if (datefmt_process_calendar_arg(calendar_obj, calendar_long, calendar_is_null, locale, "datefmt_create",
|
if (datefmt_process_calendar_arg(calendar_obj, calendar_long, calendar_is_null, locale, "datefmt_create",
|
||||||
|
|
21
ext/intl/tests/gh12282.phpt
Normal file
21
ext/intl/tests/gh12282.phpt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
--TEST--
|
||||||
|
GitHub #12282 IntlDateFormatter::locale with invalid value.
|
||||||
|
--EXTENSIONS--
|
||||||
|
intl
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
try {
|
||||||
|
new IntlDateFormatter(
|
||||||
|
'xx',
|
||||||
|
IntlDateFormatter::FULL,
|
||||||
|
IntlDateFormatter::FULL,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
'w'
|
||||||
|
);
|
||||||
|
} catch (\IntlException $e) {
|
||||||
|
echo $e->getMessage();
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
datefmt_create: invalid locale: U_ILLEGAL_ARGUMENT_ERROR
|
Loading…
Add table
Add a link
Reference in a new issue