Skip to content

Commit dfc6feb

Browse files
committed
Fixed bug #61759 (class_alias() should accept classes with leading backslashes). (Julien)
1 parent 15694f6 commit dfc6feb

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

Zend/zend_API.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2514,7 +2514,12 @@ ZEND_API int zend_register_class_alias_ex(const char *name, int name_len, zend_c
25142514
char *lcname = zend_str_tolower_dup(name, name_len);
25152515
int ret;
25162516

2517-
ret = zend_hash_add(CG(class_table), lcname, name_len+1, &ce, sizeof(zend_class_entry *), NULL);
2517+
if (lcname[0] == '\\') {
2518+
ret = zend_hash_add(CG(class_table), lcname+1, name_len, &ce, sizeof(zend_class_entry *), NULL);
2519+
} else {
2520+
ret = zend_hash_add(CG(class_table), lcname, name_len+1, &ce, sizeof(zend_class_entry *), NULL);
2521+
}
2522+
25182523
efree(lcname);
25192524
if (ret == SUCCESS) {
25202525
ce->refcount++;

Zend/zend_builtin_functions.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,15 +1399,8 @@ ZEND_FUNCTION(class_alias)
13991399
return;
14001400
}
14011401

1402-
if (!autoload) {
1403-
lc_name = do_alloca(class_name_len + 1, use_heap);
1404-
zend_str_tolower_copy(lc_name, class_name, class_name_len);
1402+
found = zend_lookup_class_ex(class_name, class_name_len, NULL, autoload, &ce TSRMLS_CC);
14051403

1406-
found = zend_hash_find(EG(class_table), lc_name, class_name_len+1, (void **) &ce);
1407-
free_alloca(lc_name, use_heap);
1408-
} else {
1409-
found = zend_lookup_class(class_name, class_name_len, &ce TSRMLS_CC);
1410-
}
14111404
if (found == SUCCESS) {
14121405
if ((*ce)->type == ZEND_USER_CLASS) {
14131406
if (zend_register_class_alias_ex(alias_name, alias_name_len, *ce TSRMLS_CC) == SUCCESS) {

0 commit comments

Comments
 (0)