From: Yasuo Ohgaki <yohgaki@php.net> Date: Tue, 3 Feb 2015 09:20:18 +0000 (+0900) Subject: Fixed Bug #67988 htmlspecialchars() does not respect default_charset specified by... X-Git-Tag: php-5.6.6RC1~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=436ba1c4886024278337a8fe446c05a0629e4215;p=php Fixed Bug #67988 htmlspecialchars() does not respect default_charset specified by ini_set. --- diff --git a/main/main.c b/main/main.c index 5d89a77c65..04890b352a 100644 --- a/main/main.c +++ b/main/main.c @@ -421,8 +421,6 @@ static PHP_INI_MH(OnUpdateInternalEncoding) { if (new_value) { OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); - } else { - OnUpdateString(entry, SG(default_charset), strlen(SG(default_charset))+1, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); } return SUCCESS; } @@ -434,8 +432,6 @@ static PHP_INI_MH(OnUpdateInputEncoding) { if (new_value) { OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); - } else { - OnUpdateString(entry, SG(default_charset), strlen(SG(default_charset))+1, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); } return SUCCESS; } @@ -447,8 +443,6 @@ static PHP_INI_MH(OnUpdateOutputEncoding) { if (new_value) { OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); - } else { - OnUpdateString(entry, SG(default_charset), strlen(SG(default_charset))+1, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); } return SUCCESS; } @@ -595,7 +589,7 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("auto_append_file", NULL, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateString, auto_append_file, php_core_globals, core_globals) STD_PHP_INI_ENTRY("auto_prepend_file", NULL, PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateString, auto_prepend_file, php_core_globals, core_globals) STD_PHP_INI_ENTRY("doc_root", NULL, PHP_INI_SYSTEM, OnUpdateStringUnempty, doc_root, php_core_globals, core_globals) - STD_PHP_INI_ENTRY("default_charset", PHP_DEFAULT_CHARSET, PHP_INI_ALL, OnUpdateString, default_charset, sapi_globals_struct, sapi_globals) +STD_PHP_INI_ENTRY("default_charset", PHP_DEFAULT_CHARSET, PHP_INI_ALL, OnUpdateString, default_charset, sapi_globals_struct, sapi_globals) STD_PHP_INI_ENTRY("default_mimetype", SAPI_DEFAULT_MIMETYPE, PHP_INI_ALL, OnUpdateString, default_mimetype, sapi_globals_struct, sapi_globals) STD_PHP_INI_ENTRY("internal_encoding", NULL, PHP_INI_ALL, OnUpdateInternalEncoding, internal_encoding, php_core_globals, core_globals) STD_PHP_INI_ENTRY("input_encoding", NULL, PHP_INI_ALL, OnUpdateInputEncoding, input_encoding, php_core_globals, core_globals) diff --git a/tests/basic/bug67988.phpt b/tests/basic/bug67988.phpt new file mode 100644 index 0000000000..e1d8e5d7d4 --- /dev/null +++ b/tests/basic/bug67988.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #67988 (htmlspecialchars() does not respect default_charset specified by ini_set) +--INI-- +default_charset=UTF-8 +--FILE-- +<?php +ini_set('default_charset', 'cp1252'); + +var_dump(ini_get('default_charset')); +var_dump(ini_get('internal_encoding')); +var_dump(ini_get('input_encoding')); +var_dump(ini_get('output_encoding')); + +var_dump(htmlentities("\xA3", ENT_HTML5)); +var_dump(htmlentities("\xA3", ENT_HTML5, 'cp1252')); + +var_dump(bin2hex(html_entity_decode("£", ENT_HTML5))); +var_dump(bin2hex(html_entity_decode("£", ENT_HTML5, 'cp1252'))); +--EXPECT-- +string(6) "cp1252" +string(0) "" +string(0) "" +string(0) "" +string(7) "£" +string(7) "£" +string(2) "a3" +string(2) "a3" diff --git a/tests/basic/encoding.phpt b/tests/basic/encoding.phpt index b2ee5f3ca2..c513cbfa79 100644 --- a/tests/basic/encoding.phpt +++ b/tests/basic/encoding.phpt @@ -14,14 +14,14 @@ var_dump(ini_get('input_encoding')); var_dump(ini_get('internal_encoding')); var_dump(ini_get('output_encoding')); -var_dump(ini_set('input_encoding', 'ISO-8859-1')); -var_dump(ini_set('internal_encoding', 'ISO-8859-1')); -var_dump(ini_set('output_encoding', 'ISO-8859-1')); +var_dump(ini_set('input_encoding', 'EUC-JP')); +var_dump(ini_set('internal_encoding', 'EUC-JP')); +var_dump(ini_set('output_encoding', 'EUC-JP')); var_dump(ini_get('input_encoding')); var_dump(ini_get('internal_encoding')); var_dump(ini_get('output_encoding')); ---EXPECTF-- +--EXPECT-- string(5) "UTF-8" string(0) "" string(0) "" @@ -34,6 +34,6 @@ string(0) "" string(0) "" string(0) "" string(0) "" -string(10) "ISO-8859-1" -string(10) "ISO-8859-1" -string(10) "ISO-8859-1" \ No newline at end of file +string(6) "EUC-JP" +string(6) "EUC-JP" +string(6) "EUC-JP"