summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-06-30 15:40:28 +0400
committerDmitry Stogov <dmitry@zend.com>2014-06-30 15:40:28 +0400
commit45082daa3a721896f1e306aa6eafb00a57bd1cc7 (patch)
tree3b59782a16f12dfd6953a7ae7d027d29bd98b30c
parent3f0ee308a04819f520c861b8edb34703eabf377c (diff)
downloadphp-git-45082daa3a721896f1e306aa6eafb00a57bd1cc7.tar.gz
Prohibited parameter redefinition
-rw-r--r--Zend/zend_compile.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index a49195d407..647fab48be 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1844,7 +1844,9 @@ void zend_do_receive_param(zend_uchar op, znode *varname, znode *initialization,
var.u.op.var = lookup_cv(CG(active_op_array), Z_STR(varname->u.constant) TSRMLS_CC);
Z_STR(varname->u.constant) = CG(active_op_array)->vars[EX_VAR_TO_NUM(var.u.op.var)];
var.EA = 0;
- if (Z_STRHASH(varname->u.constant) == THIS_HASHVAL &&
+ if (EX_VAR_TO_NUM(var.u.op.var) != CG(active_op_array)->num_args) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Redefinition of parameter %s", Z_STRVAL(varname->u.constant));
+ } else if (Z_STRHASH(varname->u.constant) == THIS_HASHVAL &&
Z_STRLEN(varname->u.constant) == sizeof("this")-1 &&
!memcmp(Z_STRVAL(varname->u.constant), "this", sizeof("this")-1)) {
if (CG(active_op_array)->scope &&