diff options
| author | Stanislav Malyshev <stas@php.net> | 2016-10-04 21:28:40 -0700 |
|---|---|---|
| committer | Stanislav Malyshev <stas@php.net> | 2016-10-04 21:28:40 -0700 |
| commit | d3eb58332af433982f1e2ae9095fb087974a95f2 (patch) | |
| tree | 9ab735be5411462b141678d3ecfc7d677557269b | |
| parent | ef801b9bf96fb46b0418772a11a9b38f52cd93b4 (diff) | |
| download | php-git-d3eb58332af433982f1e2ae9095fb087974a95f2.tar.gz | |
Add more locale length checks, due to ICU bugs.
| -rw-r--r-- | ext/intl/locale/locale_methods.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index 443856ff5e..862b9f5c87 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -395,6 +395,8 @@ static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) if(loc_name_len == 0) { loc_name = intl_locale_get_default(TSRMLS_C); } + + INTL_CHECK_LOCALE_LEN(strlen(loc_name)); /* Call ICU get */ tag_value = get_icu_value_internal( loc_name , tag_name , &result ,0); @@ -1159,6 +1161,7 @@ PHP_FUNCTION(locale_get_all_variants) loc_name = intl_locale_get_default(TSRMLS_C); } + INTL_CHECK_LOCALE_LEN(strlen(loc_name)); array_init( return_value ); @@ -1267,6 +1270,9 @@ PHP_FUNCTION(locale_filter_matches) RETURN_TRUE; } + INTL_CHECK_LOCALE_LEN(strlen(loc_range)); + INTL_CHECK_LOCALE_LEN(strlen(lang_tag)); + if( boolCanonical ){ /* canonicalize loc_range */ can_loc_range=get_icu_value_internal( loc_range , LOC_CANONICALIZE_TAG , &result , 0); @@ -1549,6 +1555,8 @@ PHP_FUNCTION(locale_lookup) loc_range = intl_locale_get_default(TSRMLS_C); } + INTL_CHECK_LOCALE_LEN(strlen(loc_range)); + hash_arr = HASH_OF(arr); if( !hash_arr || zend_hash_num_elements( hash_arr ) == 0 ) { |
