summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-01-29 16:17:30 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-01-29 16:18:46 +0100
commita62c06c4cf2020c04a2f5ac0b55aff4bb71f3edc (patch)
tree9fcdcaa5b2b3acc6db68e819c87f5bd18f537c85
parent560ff9725e6fb05942dd0c891c8a4496c57bcb4b (diff)
downloadphp-git-a62c06c4cf2020c04a2f5ac0b55aff4bb71f3edc.tar.gz
Fix mb_ord() crash if internal encoding not supported
enc_name can be NULL here. Take the name from the mbfl_encoding instead.
-rw-r--r--ext/mbstring/mbstring.c2
-rw-r--r--ext/mbstring/tests/mb_ord.phpt11
2 files changed, 9 insertions, 4 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 7f4cd451da..49adb167b2 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -4850,7 +4850,7 @@ static inline zend_long php_mb_ord(const char* str, size_t str_len, const char*
no_enc = enc->no_encoding;
if (php_mb_is_unsupported_no_encoding(no_enc)) {
- php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc_name);
+ php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc->name);
return -1;
}
diff --git a/ext/mbstring/tests/mb_ord.phpt b/ext/mbstring/tests/mb_ord.phpt
index b42bd05425..e0c5610c0b 100644
--- a/ext/mbstring/tests/mb_ord.phpt
+++ b/ext/mbstring/tests/mb_ord.phpt
@@ -19,6 +19,9 @@ var_dump(
mb_ord("\u{d800}", "utf-7"),
mb_ord("")
);
+
+mb_internal_encoding("utf-7");
+mb_ord("");
?>
--EXPECTF--
bool(true)
@@ -29,11 +32,11 @@ Warning: mb_ord(): Unknown encoding "typo" %s 10
Warning: mb_ord(): Unsupported encoding "pass" %s 11
-Warning: mb_ord(): Unsupported encoding "jis" %s 12
+Warning: mb_ord(): Unsupported encoding "JIS" in %s on line %d
-Warning: mb_ord(): Unsupported encoding "cp50222" %s 13
+Warning: mb_ord(): Unsupported encoding "CP50222" in %s on line %d
-Warning: mb_ord(): Unsupported encoding "utf-7" %s 14
+Warning: mb_ord(): Unsupported encoding "UTF-7" in %s on line %d
Warning: mb_ord(): Empty string in %s on line %d
bool(false)
@@ -42,3 +45,5 @@ bool(false)
bool(false)
bool(false)
bool(false)
+
+Warning: mb_ord(): Unsupported encoding "UTF-7" in %s on line %d