diff options
author | Nikita Popov <nikic@php.net> | 2012-03-03 12:46:17 +0000 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2012-03-03 12:46:17 +0000 |
commit | 3e7792aed7b6a8473e83bdb2417bbeefa009f65c (patch) | |
tree | 72b2363bbbfcbc91c2b7716c54fedfebdff7d7fd | |
parent | 37d7df72a62e9d63be6fb7eb83805a59f819bbf7 (diff) | |
download | php-git-3e7792aed7b6a8473e83bdb2417bbeefa009f65c.tar.gz |
Fix bug #61264: xmlrpc_parse_method_descriptions leaks temporary variable
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/xmlrpc/tests/bug61264.phpt | 17 | ||||
-rw-r--r-- | ext/xmlrpc/xmlrpc-epi-php.c | 3 |
3 files changed, 19 insertions, 2 deletions
@@ -73,6 +73,7 @@ PHP NEWS - XMLRPC: . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikic) + . Fixed bug #61264 (xmlrpc_parse_method_descriptions leaks temporary variable). (Nikita Popov) - Zlib: . Fixed bug #61139 (gzopen leaks when specifying invalid mode). (Nikic) diff --git a/ext/xmlrpc/tests/bug61264.phpt b/ext/xmlrpc/tests/bug61264.phpt new file mode 100644 index 0000000000..b1da27f252 --- /dev/null +++ b/ext/xmlrpc/tests/bug61264.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #61264: xmlrpc_parse_method_descriptions leaks temporary variable +--FILE-- +<?php +$xml = <<<XML +<?xml version="1.0" encoding="utf-8"?> +<a> + <b>foo</b> +</a> +XML; +var_dump(xmlrpc_parse_method_descriptions($xml)); +?> +--EXPECT-- +array(1) { + ["b"]=> + string(3) "foo" +} diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c index 13886c7537..cf5e257113 100644 --- a/ext/xmlrpc/xmlrpc-epi-php.c +++ b/ext/xmlrpc/xmlrpc-epi-php.c @@ -1240,8 +1240,7 @@ PHP_FUNCTION(xmlrpc_parse_method_descriptions) retval = XMLRPC_to_PHP(xVal); if (retval) { - *return_value = *retval; - zval_copy_ctor(return_value); + RETVAL_ZVAL(retval, 1, 1); } /* dust, sweep, and mop */ XMLRPC_CleanupValue(xVal); |