Add more locale length checks, due to ICU bugs.

This commit is contained in:
Stanislav Malyshev 2016-10-04 21:28:40 -07:00
parent ef801b9bf9
commit d3eb58332a

View File

@ -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 ) {