Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #78609: mb_check_encoding() no longer supports stringable objects
This commit is contained in:
Christoph M. Becker 2019-09-30 13:05:51 +02:00
commit 70f367d48a
3 changed files with 32 additions and 20 deletions

2
NEWS
View File

@ -15,6 +15,8 @@ PHP NEWS
- MBString: - MBString:
. Fixed bug #78579 (mb_decode_numericentity: args number inconsistency). . Fixed bug #78579 (mb_decode_numericentity: args number inconsistency).
(cmb) (cmb)
. Fixed bug #78609 (mb_check_encoding() no longer supports stringable
objects). (cmb)
- Standard: - Standard:
. Fixed bug #78549 (Stack overflow due to nested serialized input). (Nikita) . Fixed bug #78549 (Stack overflow due to nested serialized input). (Nikita)

View File

@ -4952,27 +4952,17 @@ PHP_FUNCTION(mb_check_encoding)
RETURN_FALSE; RETURN_FALSE;
} }
switch(Z_TYPE_P(input)) { if (Z_TYPE_P(input) == IS_ARRAY) {
case IS_LONG: if (!php_mb_check_encoding_recursive(HASH_OF(input), enc)) {
case IS_DOUBLE:
case IS_NULL:
case IS_TRUE:
case IS_FALSE:
RETURN_TRUE;
break;
case IS_STRING:
if (!php_mb_check_encoding(Z_STRVAL_P(input), Z_STRLEN_P(input), enc ? ZSTR_VAL(enc): NULL)) {
RETURN_FALSE;
}
break;
case IS_ARRAY:
if (!php_mb_check_encoding_recursive(Z_ARRVAL_P(input), enc)) {
RETURN_FALSE;
}
break;
default:
php_error_docref(NULL, E_WARNING, "Input is something other than scalar or array");
RETURN_FALSE; RETURN_FALSE;
}
} else {
if (!try_convert_to_string(input)) {
RETURN_FALSE;
}
if (!php_mb_check_encoding(Z_STRVAL_P(input), Z_STRLEN_P(input), enc ? ZSTR_VAL(enc): NULL)) {
RETURN_FALSE;
}
} }
RETURN_TRUE; RETURN_TRUE;
} }

View File

@ -0,0 +1,20 @@
--TEST--
Bug #78609 (mb_check_encoding() no longer supports stringable objects)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip mbstring extension not available');
?>
--FILE--
<?php
class Foo
{
public function __toString()
{
return 'string_representation';
}
}
var_dump(mb_check_encoding(new Foo, 'UTF-8'));
?>
--EXPECT--
bool(true)