]> granicus.if.org Git - php/commitdiff
Fixed Bug #67988 htmlspecialchars() does not respect default_charset specified by...
authorYasuo Ohgaki <yohgaki@php.net>
Tue, 3 Feb 2015 09:20:18 +0000 (18:20 +0900)
committerYasuo Ohgaki <yohgaki@php.net>
Tue, 3 Feb 2015 09:52:46 +0000 (18:52 +0900)
main/main.c
tests/basic/bug67988.phpt [new file with mode: 0644]
tests/basic/encoding.phpt

index 5d89a77c65146498e4b6aced7f0d0c096fa79ce6..04890b352ac0a8874cab71dacfca941facc03a04 100644 (file)
@@ -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 (file)
index 0000000..e1d8e5d
--- /dev/null
@@ -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("&pound;", ENT_HTML5)));
+var_dump(bin2hex(html_entity_decode("&pound;", ENT_HTML5, 'cp1252')));
+--EXPECT--
+string(6) "cp1252"
+string(0) ""
+string(0) ""
+string(0) ""
+string(7) "&pound;"
+string(7) "&pound;"
+string(2) "a3"
+string(2) "a3"
index b2ee5f3ca2e39b9d14566ed805cb584241613790..c513cbfa79a2bd2cd49bdf371e54eb3dc86fb7d7 100644 (file)
@@ -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"