summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 071502ddac..d11371ed74 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2106,6 +2106,10 @@ void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znod
class_token->u.previously_active_class_entry = CG(active_class_entry);
new_class_entry->type = ZEND_USER_CLASS;
+ if (!(strcmp(class_name->u.constant.value.str.val, "main") && strcmp(class_name->u.constant.value.str.val, "self") &&
+ strcmp(class_name->u.constant.value.str.val, "parent"))) {
+ zend_error(E_COMPILE_ERROR, "Cannot use '%s' as class name as it is reserved", class_name->u.constant.value.str.val);
+ }
if (CG(active_class_entry)) {
new_class_entry->name_length = sizeof("::")-1 + class_name->u.constant.value.str.len + CG(active_class_entry)->name_length;
new_class_entry->name = emalloc(new_class_entry->name_length+1);