ID:               44827
 Updated by:       [email protected]
 Reported By:      [email protected]
-Status:           Assigned
+Status:           Closed
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      5.*, 6CVS (2009-05-05)
 Assigned To:      iliaa
 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2009-12-30 19:15:12] [email protected]

Automatic comment from SVN on behalf of iliaa
Revision: http://svn.php.net/viewvc/?view=revision&revision=292823
Log: Fixed bug #44827 (define() allows :: in constant names).

------------------------------------------------------------------------

[2009-06-29 15:25:39] [email protected]

Code in ZendEngine2/zend_builtin_functions.c revision
1.277.2.12.2.25.2.52 checks if the class exists and creates the global
constant with the name A::B if it does. But this constant is unreachable
other than by get_defined_constants() because both constant("A::B") and
A::B works with class constants.

<?php
class A {}
define("A::B", true);
echo constant("A::B"); // Fatal error: Undefined class constant 'B'
echo A::B; // Fatal error: Undefined class constant 'B'
?>

I suggest to issue an error if the constant name contains "::"
regardless the class exists or not. The code would be even simpler.

------------------------------------------------------------------------

[2009-06-08 13:10:06] [email protected]

Reopened.
Patches for HEAD and 5_2 broke the build and have been reverted.

------------------------------------------------------------------------

[2009-06-08 01:27:17] [email protected]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



------------------------------------------------------------------------

[2008-10-25 21:18:41] [email protected]

now that namespace separator will be \, the fix is simple: grep for
"::" and fail if a user tries to do it.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/44827

-- 
Edit this bug report at http://bugs.php.net/?id=44827&edit=1

Reply via email to