]> granicus.if.org Git - php/commitdiff
Throw warning if invalid internal_encoding ini is specified
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 7 May 2020 12:43:36 +0000 (14:43 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 7 May 2020 12:44:13 +0000 (14:44 +0200)
12 files changed:
ext/mbstring/mbstring.c
ext/mbstring/tests/ini_mbstring_invalid.phpt
ext/mbstring/tests/mb_internal_encoding_ini_invalid_encoding.phpt
ext/standard/html.c
ext/standard/tests/strings/htmlentities01.phpt
ext/standard/tests/strings/htmlentities02.phpt
ext/standard/tests/strings/htmlentities03.phpt
ext/standard/tests/strings/htmlentities10.phpt
ext/standard/tests/strings/htmlentities11.phpt
ext/standard/tests/strings/htmlentities12.phpt
ext/standard/tests/strings/htmlentities13.phpt
ext/standard/tests/strings/htmlentities14.phpt

index f42b449c34be7496923ccb0a0473d2c504794889..84e28f4a4b52549b8b91f90d6db47b2fb8c4005a 100644 (file)
@@ -898,6 +898,10 @@ static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, siz
 
        if (!new_value || !new_value_length || !(encoding = mbfl_name2encoding(new_value))) {
                /* falls back to UTF-8 if an unknown encoding name is given */
+               if (new_value) {
+                       php_error_docref("ref.mbstring", E_WARNING,
+                               "Unknown encoding \"%s\" in ini setting", new_value);
+               }
                encoding = mbfl_no2encoding(mbfl_no_encoding_utf8);
        }
        MBSTRG(internal_encoding) = encoding;
index 57f2404fc7efac989481e4b71e0bb5da7d5b58ec..17a1efd245959629038f76128cc9661b72f80c86 100644 (file)
@@ -23,6 +23,7 @@ PHP Deprecated:  PHP Startup: Use of mbstring.http_input is deprecated in Unknow
 PHP Warning:  PHP Startup: INI setting contains invalid encoding "HTTP_INPUT" in Unknown on line 0
 PHP Deprecated:  PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0
 PHP Deprecated:  PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
+PHP Warning:  PHP Startup: Unknown encoding "UNKNOWN_ENCODING" in ini setting in Unknown on line 0
 
 Warning: PHP Startup: INI setting contains invalid encoding "DETECT_ORDER" in Unknown on line 0
 
@@ -33,3 +34,5 @@ Warning: PHP Startup: INI setting contains invalid encoding "HTTP_INPUT" in Unkn
 Deprecated: PHP Startup: Use of mbstring.http_output is deprecated in Unknown on line 0
 
 Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
+
+Warning: PHP Startup: Unknown encoding "UNKNOWN_ENCODING" in ini setting in Unknown on line 0
index 9f3ce5f8c52ce48458e9469c318077c0d4d3a4be..4d2fb1eca186baf0bf52fe5feaf1deab503cc909 100644 (file)
@@ -21,8 +21,11 @@ echo ini_get('mbstring.internal_encoding')."\n";
 ?>
 --EXPECT--
 PHP Deprecated:  PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
+PHP Warning:  PHP Startup: Unknown encoding "BAD" in ini setting in Unknown on line 0
 
 Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
+
+Warning: PHP Startup: Unknown encoding "BAD" in ini setting in Unknown on line 0
 *** Testing INI mbstring.internal_encoding: invalid encoding specified in INI ***
 UTF-8
 BAD
index 5eaf7c6711b6d2a341a346eefd8cd81b972aaa15..aa971d5098165c837963049a7bf72acb880f7977 100644 (file)
@@ -386,10 +386,7 @@ static enum entity_charset determine_charset(char *charset_hint)
        if (zenc != NULL) {
                charset_hint = (char *)zend_multibyte_get_encoding_name(zenc);
                if (charset_hint != NULL && (len=strlen(charset_hint)) != 0) {
-                       if ((len == 4) /* sizeof (auto|pass) */ &&
-                                       /* XXX should the "wchar" be ignored as well?? */
-                                       (!memcmp("pass", charset_hint, 4) ||
-                                        !memcmp("auto", charset_hint, 4))) {
+                       if (len == sizeof("auto")-1 && !memcmp("auto", charset_hint, sizeof("auto")-1)) {
                                charset_hint = NULL;
                                len = 0;
                        } else {
index 269bd467b9e5ac501965a82514a77ea57fac1b4b..32f9e8edd102ea7638cd791c0610ec65137fe6b6 100644 (file)
@@ -2,11 +2,10 @@
 htmlentities() test 1 (cp1252)
 --INI--
 output_handler=
-internal_encoding=pass
 --FILE--
 <?php
-    var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, 'cp1252'));
-    var_dump(htmlentities("\x80\xa2\xa3\xa4\xa5", ENT_QUOTES, 'cp1252'));
+var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, 'cp1252'));
+var_dump(htmlentities("\x80\xa2\xa3\xa4\xa5", ENT_QUOTES, 'cp1252'));
 ?>
 --EXPECT--
 string(28) "&sbquo;&dagger;&trade;&Yuml;"
index 6dcc4de48356a98f2122d79a7e32830b0ddde6d2..9e6a96e06098532403884995041209131fa55f2e 100644 (file)
@@ -10,11 +10,12 @@ if (!$result) {
 --INI--
 output_handler=
 default_charset=
-internal_encoding=pass
+internal_encoding=
 --FILE--
 <?php
-    setlocale(LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15", 'fr_FR@euro');
-    var_dump(htmlentities("\xbc\xbd\xbe", ENT_QUOTES, ''));
+// Locale-based encoding guessing no longer works.
+setlocale(LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15", 'fr_FR@euro');
+var_dump(htmlentities("\xbc\xbd\xbe", ENT_QUOTES, ''));
 ?>
 --EXPECT--
-string(20) "&OElig;&oelig;&Yuml;"
+string(0) ""
index b7e07fb3758b4562acf2e453f1fbf8d3868134ea..484065341496d9c06d41004e0ac622641c17cf5a 100644 (file)
@@ -10,11 +10,12 @@ if (!$result || preg_match('/ISO/i', setlocale(LC_CTYPE, 0)) == 0) {
 --INI--
 output_handler=
 default_charset=
-internal_encoding=pass
+internal_encoding=
 --FILE--
 <?php
-    setlocale( LC_CTYPE, "de_DE.ISO-8859-1", "de_DE.ISO8859-1");
-    var_dump(htmlentities("\xe4\xf6\xfc", ENT_QUOTES, ''));
+// Locale-based encoding guessing no longer works.
+setlocale( LC_CTYPE, "de_DE.ISO-8859-1", "de_DE.ISO8859-1");
+var_dump(htmlentities("\xe4\xf6\xfc", ENT_QUOTES));
 ?>
 --EXPECT--
-string(18) "&auml;&ouml;&uuml;"
+string(0) ""
index 2f8c42b7e52d8702a3ec0ae4e8a74ff8df296d61..58c0b14b1eabe48bec47f6821e3e35d433a52e26 100644 (file)
@@ -2,13 +2,12 @@
 htmlentities() test 10 (default_charset / cp1252)
 --INI--
 output_handler=
-internal_encoding=pass
 default_charset=cp1252
 --FILE--
 <?php
-    print ini_get('default_charset')."\n";
-    var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, ''));
-    var_dump(htmlentities("\x80\xa2\xa3\xa4\xa5", ENT_QUOTES, ''));
+print ini_get('default_charset')."\n";
+var_dump(htmlentities("\x82\x86\x99\x9f", ENT_QUOTES, ''));
+var_dump(htmlentities("\x80\xa2\xa3\xa4\xa5", ENT_QUOTES, ''));
 ?>
 --EXPECT--
 cp1252
index c803f76a536ad46d2b0b9b39f245a631c9793148..f34db6e2dd44daa06a20339ba0ba6735355fc2a7 100644 (file)
@@ -2,12 +2,11 @@
 htmlentities() test 11 (default_charset / ISO-8859-15)
 --INI--
 output_handler=
-internal_encoding=pass
 default_charset=ISO-8859-15
 --FILE--
 <?php
-    print ini_get('default_charset')."\n";
-    var_dump(htmlentities("\xbc\xbd\xbe", ENT_QUOTES, ''));
+print ini_get('default_charset')."\n";
+var_dump(htmlentities("\xbc\xbd\xbe", ENT_QUOTES, ''));
 ?>
 --EXPECT--
 ISO-8859-15
index c2963f1c86ff024e9556e78f954d0b60a75381ac..fdf52393f35105a0846606863acd64f38a0ca80e 100644 (file)
@@ -2,12 +2,11 @@
 htmlentities() test 12 (default_charset / ISO-8859-1)
 --INI--
 output_handler=
-internal_encoding=pass
 default_charset=ISO-8859-1
 --FILE--
 <?php
-    print ini_get('default_charset')."\n";
-    var_dump(htmlentities("\xe4\xf6\xfc", ENT_QUOTES, ''));
+print ini_get('default_charset')."\n";
+var_dump(htmlentities("\xe4\xf6\xfc", ENT_QUOTES, ''));
 ?>
 --EXPECT--
 ISO-8859-1
index ac2c8cd4b000aef4938a2a0c5fbf5e975145b611..03b970df15f1e8a92e3a2492bcbd50579c7ae551 100644 (file)
@@ -2,13 +2,12 @@
 htmlentities() test 13 (default_charset / EUC-JP)
 --INI--
 output_handler=
-internal_encoding=pass
 default_charset=EUC-JP
 filter.default=unsafe_raw
 --FILE--
 <?php
-    print ini_get('default_charset')."\n";
-    var_dump(htmlentities("\xa1\xa2\xa1\xa3\xa1\xa4", ENT_QUOTES, ''));
+print ini_get('default_charset')."\n";
+var_dump(htmlentities("\xa1\xa2\xa1\xa3\xa1\xa4", ENT_QUOTES, ''));
 ?>
 --EXPECTF--
 EUC-JP
index 60226cbe10bc9dd06c0daf9e5f4b2dc5bc8191c7..6850f31f8974798c824c4aa4eae01989c15325d2 100644 (file)
@@ -2,13 +2,12 @@
 htmlentities() test 14 (default_charset / Shift_JIS)
 --INI--
 output_handler=
-internal_encoding=pass
 default_charset=Shift_JIS
 filter.default=unsafe_raw
 --FILE--
 <?php
-    print ini_get('default_charset')."\n";
-    var_dump(htmlentities("\x81\x41\x81\x42\x81\x43", ENT_QUOTES, ''));
+print ini_get('default_charset')."\n";
+var_dump(htmlentities("\x81\x41\x81\x42\x81\x43", ENT_QUOTES, ''));
 ?>
 --EXPECTF--
 Shift_JIS