com php-src: Fix bug #67349: Locale::parseLocale Double Free: ext/intl/locale/locale_methods.c ext/intl/tests/locale_ parse_locale2.phpt
| From: | Johannes Schlüter | Date: | Fri, 18 Jul 2014 23:26:05 +0000 |
| Subject: | com php-src: Fix bug #67349: Locale::parseLocale Double Free: ext/intl/locale/locale_methods.c ext/intl/tests/locale_ parse_locale2.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79621@lists.php.net to get a copy of this message | ||
Commit: 8ab4e2e90de44db0ee56b53e956b2b23f3c1cfa8
Author: Stanislav Malyshev <stas@php.net> Wed, 4 Jun 2014 01:06:01 -0700
Parents: b512adf78d2a1b5fc16cec7dc767b2e5c8f0297e
Branches: PHP-5.3
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=8ab4e2e90de44db0ee56b53e956b2b23f3c1cfa8
Log:
Fix bug #67349: Locale::parseLocale Double Free
Bugs:
https://bugs.php.net/67349
Changed paths:
M ext/intl/locale/locale_methods.c
M ext/intl/tests/locale_parse_locale2.phpt
Diff:
diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c
index 1707c69..0afbba2 100644
--- a/ext/intl/locale/locale_methods.c
+++ b/ext/intl/locale/locale_methods.c
@@ -269,8 +269,7 @@ static char* get_icu_value_internal( char* loc_name , char* tag_name, int* resul
grOffset = findOffset( LOC_GRANDFATHERED , loc_name );
if( grOffset >= 0 ){
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
- tag_value = estrdup(loc_name);
- return tag_value;
+ return estrdup(loc_name);
} else {
/* Since Grandfathered , no value , do nothing , retutn NULL */
return NULL;
@@ -280,8 +279,8 @@ static char* get_icu_value_internal( char* loc_name , char* tag_name, int* resul
if( fromParseLocale==1 ){
/* Handle singletons */
if( strcmp(tag_name , LOC_LANG_TAG)==0 ){
- if( strlen(loc_name)>1 && (isIDPrefix(loc_name) ==1 ) ){
- return loc_name;
+ if( strlen(loc_name)>1 && isIDPrefix(loc_name) ){
+ return estrdup(loc_name);
}
}
diff --git a/ext/intl/tests/locale_parse_locale2.phpt b/ext/intl/tests/locale_parse_locale2.phpt
index 6012862..30cc8cc 100644
--- a/ext/intl/tests/locale_parse_locale2.phpt
+++ b/ext/intl/tests/locale_parse_locale2.phpt
@@ -63,7 +63,8 @@ function ut_main()
//Some Invalid Tags:
'de-419-DE',
'a-DE',
- 'ar-a-aaa-b-bbb-a-ccc'
+ 'ar-a-aaa-b-bbb-a-ccc',
+ 'x-AAAAAA',
);
@@ -201,3 +202,6 @@ No values found from Locale parsing.
---------------------
ar-a-aaa-b-bbb-a-ccc:
language : 'ar' ,
+---------------------
+x-AAAAAA:
+private0 : 'AAAAAA' ,