mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
- Fixed bug #55082 (var_export() doesn't escape properties properly).
This commit is contained in:
parent
85bf6f0329
commit
3dafd9549d
2
NEWS
2
NEWS
@ -3,6 +3,8 @@ PHP NEWS
|
||||
?? ??? 2011, PHP 5.3.7
|
||||
- Core:
|
||||
. Fixed crash in error_log(). (Felipe) Reported by Mateusz Kocielski.
|
||||
. Fixed bug #55082 (var_export() doesn't escape properties properly).
|
||||
(Gustavo)
|
||||
|
||||
- DateTime extension:
|
||||
. Fixed bug where the DateTime object got changed while using date_diff().
|
||||
|
11
ext/standard/tests/general_functions/var_export_basic9.phpt
Normal file
11
ext/standard/tests/general_functions/var_export_basic9.phpt
Normal file
@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #55082: var_export() doesn't escape properties properly
|
||||
--FILE--
|
||||
<?php
|
||||
$x = new stdClass();
|
||||
$x->{'\'\\'} = 7;
|
||||
echo var_export($x);
|
||||
--EXPECT--
|
||||
stdClass::__set_state(array(
|
||||
'\'\\' => 7,
|
||||
))
|
@ -387,18 +387,26 @@ static int php_object_element_export(zval **zv TSRMLS_DC, int num_args, va_list
|
||||
{
|
||||
int level;
|
||||
smart_str *buf;
|
||||
char *prop_name, *class_name;
|
||||
|
||||
level = va_arg(args, int);
|
||||
buf = va_arg(args, smart_str *);
|
||||
|
||||
buffer_append_spaces(buf, level + 2);
|
||||
if (hash_key->nKeyLength != 0) {
|
||||
zend_unmangle_property_name(hash_key->arKey, hash_key->nKeyLength - 1, &class_name, &prop_name);
|
||||
char *class_name, /* ignored, but must be passed to unmangle */
|
||||
*pname,
|
||||
*pname_esc;
|
||||
int pname_esc_len;
|
||||
|
||||
zend_unmangle_property_name(hash_key->arKey, hash_key->nKeyLength - 1,
|
||||
&class_name, &pname);
|
||||
pname_esc = php_addcslashes(pname, strlen(pname), &pname_esc_len, 0,
|
||||
"'\\", 2 TSRMLS_CC);
|
||||
|
||||
smart_str_appendc(buf, '\'');
|
||||
smart_str_appends(buf, prop_name);
|
||||
smart_str_appendl(buf, pname_esc, pname_esc_len);
|
||||
smart_str_appendc(buf, '\'');
|
||||
efree(pname_esc);
|
||||
} else {
|
||||
smart_str_append_long(buf, hash_key->h);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user