]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.4' into PHP-5.5
authorStanislav Malyshev <stas@php.net>
Tue, 24 Jun 2014 17:25:09 +0000 (10:25 -0700)
committerStanislav Malyshev <stas@php.net>
Tue, 24 Jun 2014 17:25:09 +0000 (10:25 -0700)
* PHP-5.4:
  5.4.30
  Better fix for bug #67072 with more BC provisions
  Fix bug #67498 - phpinfo() Type Confusion Information Leak Vulnerability
  update CVE
  Fix bug #67492: unserialize() SPL ArrayObject / SPLObjectStorage Type Confusion
  Fix bug #67397 (Buffer overflow in locale_get_display_name->uloc_getDisplayName (libicu 4.8.1))
  Fix bug #67349: Locale::parseLocale Double Free
  add CVEs
  Fix potential segfault in dns_get_record()
  Fix bug #66127 (Segmentation fault with ArrayObject unset)
  5.4.30 rc1

Conflicts:
ext/intl/locale/locale_methods.c

1  2 
ext/intl/locale/locale_methods.c
ext/spl/spl_array.c
ext/standard/info.c

index 21b5847f2d339428642b5060ef3c824d57f5d877,3bb5648356cbc3c9331e23dd97f48ea0e00d4a10..f1e184914d67eaac1ecb53b25163028e8e9aa40e
@@@ -280,8 -282,8 +279,8 @@@ static char* get_icu_value_internal( co
        if( fromParseLocale==1 ){
                /* Handle singletons */
                if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
-                       if( strlen(loc_name)>1 && (isIDPrefix(loc_name) ==1 ) ){
-                               return (char *)loc_name;
 -                      if( strlen(loc_name)>1 && isIDPrefix(loc_name) ){
++                      if( strlen(loc_name)>1 && (isIDPrefix(loc_name) == 1) ){
+                               return estrdup(loc_name);
                        }
                }
  
@@@ -498,8 -500,16 +497,16 @@@ static void get_icu_disp_value_src_php
                RETURN_FALSE;
        }
  
+     if(loc_name_len > ULOC_FULLNAME_CAPACITY) {
+         /* See bug 67397: overlong locale names cause trouble in uloc_getDisplayName */
+               spprintf(&msg , 0, "locale_get_display_%s : name too long", tag_name );
+               intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,  msg , 1 TSRMLS_CC );
+               efree(msg);
+               RETURN_FALSE;
+     }
        if(loc_name_len == 0) {
 -        loc_name = INTL_G(default_locale);
 +              loc_name = intl_locale_get_default(TSRMLS_C);
        }
  
        if( strcmp(tag_name, DISP_NAME) != 0 ){
Simple merge
Simple merge