From: Nikita Popov Date: Fri, 4 Aug 2017 11:00:09 +0000 (+0200) Subject: Also check for invalid codepoints in mb_ord() X-Git-Tag: php-7.2.0beta3~46 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=353f7bf461005895082c440ee6619edf7e2ec8e8;p=php Also check for invalid codepoints in mb_ord() And return false in that case, instead of returning 0x3f... --- diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 5618d7a75b..57e438429d 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -5074,7 +5074,21 @@ static inline zend_long php_mb_ord(const char* str, size_t str_len, const char* return -1; } - ret = php_mb_convert_encoding(str, str_len, "UCS-4BE", enc, &ret_len); + { + long orig_illegalchars = MBSTRG(illegalchars); + MBSTRG(illegalchars) = 0; + ret = php_mb_convert_encoding(str, str_len, "UCS-4BE", enc, &ret_len); + if (MBSTRG(illegalchars) != 0) { + if (ret) { + efree(ret); + } + MBSTRG(illegalchars) = orig_illegalchars; + return -1; + } + + MBSTRG(illegalchars) = orig_illegalchars; + } + if (ret == NULL) { return -1; } diff --git a/ext/mbstring/tests/mb_ord.phpt b/ext/mbstring/tests/mb_ord.phpt index 4bf0d0c0e4..25249dae3c 100644 --- a/ext/mbstring/tests/mb_ord.phpt +++ b/ext/mbstring/tests/mb_ord.phpt @@ -6,7 +6,7 @@ mb_ord()