Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_builtin_functions.c
| From: | Ilia Alshanetsky | Date: | Thu, 05 Mar 2009 13:43:53 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_builtin_functions.c | ||
| References: | 1 2 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-56431@lists.php.net to get a copy of this message | ||
Oops look like some un-intended code got committed along the way, I'll revert.
Ilia Alshanetsky
On 5-Mar-09, at 4:39 AM, Dmitry Stogov wrote:
Hi Ilia, It can't be compiled. Thanks. Dmitry. Ilia Alshanetsky wrote:iliaa Tue Mar 3 23:43:06 2009 UTC--Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpModified files: /ZendEngine2 zend_builtin_functions.c Log: MFB: Fixed bug #47549 (get_defined_constants() return array with brokenarray categories) http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.397&r2=1.398&diff_format=u Index: ZendEngine2/zend_builtin_functions.c diff -u ZendEngine2/zend_builtin_functions.c:1.397 ZendEngine2/zend_builtin_functions.c:1.398 --- ZendEngine2/zend_builtin_functions.c:1.397 Sat Jan 10 19:14:27 2009 +++ ZendEngine2/zend_builtin_functions.c Tue Mar 3 23:43:06 2009 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_builtin_functions.c,v 1.397 2009/01/10 19:14:27 felipe Exp $ */ +/* $Id: zend_builtin_functions.c,v 1.398 2009/03/03 23:43:06 iliaa Exp $ */ #include "zend.h" #include "zend_API.h" @@ -25,6 +25,7 @@ #include "zend_constants.h" #include "zend_ini.h" #include "zend_extensions.h" +#include <ctype.h> #undef ZEND_TEST_EXCEPTIONS @@ -626,6 +627,40 @@ return; } + /* check if class constant */ + if ((p = memchr(name, ':', name_len))) { + char *s = name; + zend_class_entry **ce; + + if (*(p + 1) != ':') { /* invalid constant specifier */ + RETURN_FALSE; + } else if ((p + 2) >= (name + name_len)) { /* constant name length < 1 */ + zend_error(E_WARNING, "Constants name cannot be empty"); + RETURN_FALSE; + } else if (zend_lookup_class(s, (p - s), &ce TSRMLS_CC) != SUCCESS) { /* invalid class name */ + zend_error(E_WARNING, "Class does not exists"); + RETURN_FALSE; + } else { /* check of constant name contains invalid chars */ + int ok = 1; + p += 2; /* move beyond :: to 1st char of constant's name */ + + if (!isalpha(*p) && *p != '_') { + ok = 0; + } + + while (ok && *++p) { + if (!isalnum(*p) && *p != '_') { + ok = 0; + break; + } + } + + if (!ok) { + RETURN_FALSE; + } + } + } + if(non_cs) { case_sensitive = 0; } @@ -1885,7 +1920,8 @@ module_names[0] = "internal"; zend_hash_internal_pointer_reset_ex(&module_registry, &pos); while (zend_hash_get_current_data_ex(&module_registry, (void *) &module, &pos) != FAILURE) { - module_names[i++] = (char*)module->name; + module_names[module->module_number] = (char *)module->name; + i++; zend_hash_move_forward_ex(&module_registry, &pos); } module_names[i] = "user";