]> granicus.if.org Git - php/commitdiff
Prevented modification of constant arguments
authorDmitry Stogov <dmitry@zend.com>
Wed, 16 Apr 2014 17:31:32 +0000 (21:31 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 16 Apr 2014 17:31:32 +0000 (21:31 +0400)
Zend/zend_interfaces.c

index 3e9d9378b68ccd382cc48ba30110763ff638552d..cf8889e0dfcfd25c5ff7958bc68c0b56d4f253da 100644 (file)
@@ -110,10 +110,10 @@ ZEND_API zval* zend_call_method(zval *object, zend_class_entry *obj_ce, zend_fun
                }
        }
        /* copy arguments back, they might be changed by references */
-       if (param_count > 0) {
+       if (param_count > 0 && Z_ISREF(params[0]) && !Z_ISREF_P(arg1)) {
                ZVAL_COPY_VALUE(arg1, &params[0]);
        }
-       if (param_count > 1) {
+       if (param_count > 1 && Z_ISREF(params[1]) && !Z_ISREF_P(arg2)) {
                ZVAL_COPY_VALUE(arg2, &params[1]);
        }
        if (!retval_ptr) {