From a62c06c4cf2020c04a2f5ac0b55aff4bb71f3edc Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 29 Jan 2020 16:17:30 +0100 Subject: [PATCH] Fix mb_ord() crash if internal encoding not supported enc_name can be NULL here. Take the name from the mbfl_encoding instead. --- ext/mbstring/mbstring.c | 2 +- ext/mbstring/tests/mb_ord.phpt | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 7f4cd451da7..49adb167b2c 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 b42bd054250..e0c5610c0b3 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