From c00f5e6531a3f72bb8f7c107d2c390fadad736a0 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 4 Aug 2018 12:51:57 +0200 Subject: [PATCH] Fix #76704: mb_detect_order return value varies based on argument type php_mb_parse_encoding_list() and php_mb_parse_encoding_array() are supposed to return SUCCESS and FAILURE, not 1 and 0, respectively. --- NEWS | 3 +++ ext/mbstring/mbstring.c | 10 +++++----- ext/mbstring/tests/bug76704.phpt | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 ext/mbstring/tests/bug76704.phpt diff --git a/NEWS b/NEWS index a3251a740e..e02ef74131 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 7.1.22 +- mbstring: + . Fixed bug #76704 (mb_detect_order return value varies based on argument + type). (cmb) 16 Aug 2018, PHP 7.1.21 diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index d997ffbe52..fa2d794e1a 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -681,7 +681,7 @@ static sapi_post_entry mbstr_post_entries[] = { /* }}} */ /* {{{ static int php_mb_parse_encoding_list() - * Return 0 if input contains any illegal encoding, otherwise 1. + * Return FAILURE if input contains any illegal encoding, otherwise SUCCESS. * Even if any illegal encoding is detected the result may contain a list * of parsed encodings. */ @@ -762,7 +762,7 @@ php_mb_parse_encoding_list(const char *value, size_t value_length, const mbfl_en *entry++ = encoding; n++; } else { - ret = 0; + ret = FAILURE; } } p1 = p2 + 1; @@ -778,7 +778,7 @@ php_mb_parse_encoding_list(const char *value, size_t value_length, const mbfl_en if (return_list) { *return_list = NULL; } - ret = 0; + ret = FAILURE; } if (return_size) { *return_size = n; @@ -790,7 +790,7 @@ php_mb_parse_encoding_list(const char *value, size_t value_length, const mbfl_en if (return_size) { *return_size = 0; } - ret = 0; + ret = FAILURE; } efree(tmpstr); } @@ -800,7 +800,7 @@ php_mb_parse_encoding_list(const char *value, size_t value_length, const mbfl_en /* }}} */ /* {{{ static int php_mb_parse_encoding_array() - * Return 0 if input contains any illegal encoding, otherwise 1. + * Return FAILURE if input contains any illegal encoding, otherwise SUCCESS. * Even if any illegal encoding is detected the result may contain a list * of parsed encodings. */ diff --git a/ext/mbstring/tests/bug76704.phpt b/ext/mbstring/tests/bug76704.phpt new file mode 100644 index 0000000000..502f7e3ef6 --- /dev/null +++ b/ext/mbstring/tests/bug76704.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #76704 (mb_detect_order return value varies based on argument type) +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +bool(false) +bool(false) +===DONE=== -- 2.40.0