php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #69537 __debugInfo with empty string for key gives error
Submitted: 2015-04-27 17:02 UTC Modified: 2015-05-08 22:13 UTC
From: [email protected] Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 5.6.8 OS: N/A
Private report: No CVE-ID: None
 [2015-04-27 17:02 UTC] [email protected]
Description:
------------
Returning debug info through the function __debugInfo with an empty key as the key for the first element gives a warning message "Notice: Illegal member variable name in /in/0raS3 on line 10"

Test script:
---------------
<?php

class A{
    function __debugInfo(){
        return ['' => 1];
    }
}


print_r(new A);

Expected result:
----------------
A Object
(
    [] => 1
)

Actual result:
--------------
A Object
(
    [
Notice: Illegal member variable name in /in/0raS3 on line 10
] => 1
)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-04-28 02:42 UTC] [email protected]
I have to say it's expected behavior

see: https://github.com/laruence/php-src/blob/master/Zend/tests/debug_info.phpt
 [2015-04-28 02:42 UTC] [email protected]
or at least a expected side affect
 [2015-04-28 02:43 UTC] [email protected]
-Status: Open +Status: Feedback
 [2015-04-28 12:35 UTC] [email protected]
Hi Laruence,

Sorry, I don't understand what you mean. The tests don't cover the case when the key is empty.

The issue also doesn't manifest when the empty key isn't the first element i.e. this:

<?php 

class A{
    function __debugInfo(){
        return [
            
            "foo" => 'bar',
            '' => 'bar',
        ];
    }
}


print_r(new A);

?>

works fine.
 [2015-04-28 12:43 UTC] [email protected]
-Status: Feedback +Status: Open
 [2015-04-29 05:21 UTC] [email protected]
$ sapi/cli/php -n -d error_reporting=-1 /tmp/1.php
A Object
(
    [foo] => bar
    [
Notice: Illegal member variable name in /tmp/1.php on line 14
] => bar
)
 [2015-04-29 05:22 UTC] [email protected]
the problem is, we use \0class_name\0property_name for private properties.

so, \0 has a special meaning if it's the lead char.
 [2015-05-05 03:09 UTC] [email protected]
-Status: Open +Status: Not a bug
 [2015-05-05 03:09 UTC] [email protected]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php


 [2015-05-08 22:13 UTC] [email protected]
Reading the \0 is a bug, as that's past the end of the string (well, greater than the length variable).

The bug isn't saying that strings starting with \0 should be accepted. It's saying that it shouldn't even get that far.

Basically, the check at http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_compile.c#1242 should also include a check against name->len:

    if (name->len == 0 || name->val[0] != '\0') {
 [2015-05-08 22:13 UTC] [email protected]
-Status: Not a bug +Status: Verified
 [2016-04-03 11:40 UTC] [email protected]
Automatic comment on behalf of krakjoe
Revision: http://git.php.net/?p=php-src.git;a=commit;h=14e4c610e95a69b464596640e1f3996687e3d5ca
Log: Fix #69537: __debugInfo with empty string for key gives error
 [2016-04-03 11:40 UTC] [email protected]
-Status: Verified +Status: Closed
 [2016-04-03 11:41 UTC] [email protected]
Automatic comment on behalf of krakjoe
Revision: http://git.php.net/?p=php-src.git;a=commit;h=91c10662c887c0e0a80844b1655cf329c5c58352
Log: fix #69537: __debugInfo with empty string for key gives error
 [2016-04-03 11:41 UTC] [email protected]
Automatic comment on behalf of krakjoe
Revision: http://git.php.net/?p=php-src.git;a=commit;h=91c10662c887c0e0a80844b1655cf329c5c58352
Log: fix #69537: __debugInfo with empty string for key gives error
 [2016-04-04 22:12 UTC] [email protected]
Automatic comment on behalf of krakjoe
Revision: http://git.php.net/?p=php-src.git;a=commit;h=14e4c610e95a69b464596640e1f3996687e3d5ca
Log: Fix #69537: __debugInfo with empty string for key gives error
 [2016-07-20 11:32 UTC] [email protected]
Automatic comment on behalf of krakjoe
Revision: http://git.php.net/?p=php-src.git;a=commit;h=91c10662c887c0e0a80844b1655cf329c5c58352
Log: fix #69537: __debugInfo with empty string for key gives error
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon Jun 09 05:01:27 2025 UTC