From 26a9dc3e04813a76bf59ffb5bf9df47f6034008b Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 18 Aug 2014 18:12:50 +0200 Subject: [PATCH] Fix bug #67858: Leak when $php_errormsg already set --- Zend/tests/bug67858.phpt | 19 +++++++++++++++++++ Zend/zend_execute_API.c | 1 + 2 files changed, 20 insertions(+) create mode 100644 Zend/tests/bug67858.phpt diff --git a/Zend/tests/bug67858.phpt b/Zend/tests/bug67858.phpt new file mode 100644 index 0000000000..f0cfc74b0a --- /dev/null +++ b/Zend/tests/bug67858.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #67858: Leak when $php_errormsg already set +--INI-- +track_errors=1 +error_reporting=E_ALL +--FILE-- + +--EXPECTF-- +Notice: Undefined variable: var in %s on line %d +string(23) "Undefined variable: var" diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 8af877215c..b45a021650 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1724,6 +1724,7 @@ ZEND_API int zend_set_local_var_str(const char *name, int len, zval *value, int if (op_array->vars[i]->h == h && op_array->vars[i]->len == len && memcmp(op_array->vars[i]->val, name, len) == 0) { + zval_ptr_dtor(EX_VAR_NUM(i)); ZVAL_COPY_VALUE(EX_VAR_NUM(i), value); return SUCCESS; } -- 2.50.1