From 5ead613386da7b194dc59fcca19631ab8597422c Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Thu, 21 Dec 2006 02:09:36 +0000 Subject: [PATCH] Fix a possible memory leak --- Zend/zend_compile.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 43623e200e..85e3131a36 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2740,19 +2740,22 @@ void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znod { zend_op *opline; int doing_inheritance = 0; - zend_class_entry *new_class_entry = emalloc(sizeof(zend_class_entry)); - char *lcname = zend_str_tolower_dup(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); + zend_class_entry *new_class_entry; + char *lcname; if (CG(active_class_entry)) { zend_error(E_COMPILE_ERROR, "Class declarations may not be nested"); return; } + lcname = zend_str_tolower_dup(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); + if (!(strcmp(lcname, "self") && strcmp(lcname, "parent"))) { efree(lcname); zend_error(E_COMPILE_ERROR, "Cannot use '%s' as class name as it is reserved", class_name->u.constant.value.str.val); } + new_class_entry = emalloc(sizeof(zend_class_entry)); new_class_entry->type = ZEND_USER_CLASS; new_class_entry->name = class_name->u.constant.value.str.val; new_class_entry->name_length = class_name->u.constant.value.str.len; -- 2.50.1