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.
This commit is contained in:
Christoph M. Becker 2018-08-04 12:51:57 +02:00
parent b71a503844
commit c00f5e6531
3 changed files with 24 additions and 5 deletions

3
NEWS
View File

@ -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

View File

@ -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.
*/

View File

@ -0,0 +1,16 @@
--TEST--
Bug #76704 (mb_detect_order return value varies based on argument type)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip mbstring extension not available');
?>
--FILE--
<?php
var_dump(mb_detect_order('Foo, UTF-8'));
var_dump(mb_detect_order(['Foo', 'UTF-8']))
?>
===DONE===
--EXPECT--
bool(false)
bool(false)
===DONE===