svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c
trunk/ext/xmlrpc/tests/bug61097.phpt trunk/ext/xmlrpc/xmlrpc-epi-php.c
| From: | Nikita Popov | Date: | Sat, 18 Feb 2012 14:58:19 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c trunk/ext/xmlrpc/tests/bug61097.phpt trunk/ext/xmlrpc/xmlrpc-epi-php.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-67688@lists.php.net to get a copy of this message | ||
nikic Sat, 18 Feb 2012 14:58:19 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=323331
Log:
Fix bug #61097 Memory leak in xmlrpc functions copying zvals
Needs to be merged to 5.4.
Bug: https://bugs.php.net/61097 (Assigned) Memory leak in
xmlrpc functions copying zvals
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
A php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt
U php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c
A php/php-src/trunk/ext/xmlrpc/tests/bug61097.phpt
U php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2012-02-18 13:39:13 UTC (rev 323330)
+++ php/php-src/branches/PHP_5_3/NEWS 2012-02-18 14:58:19 UTC (rev 323331)
@@ -54,6 +54,9 @@
. Fixed bug #61058 (array_fill leaks if start index is PHP_INT_MAX).
(Laruence)
+- XMLRPC:
+ . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikic)
+
02 Feb 2012, PHP 5.3.10
- Core:
Added: php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61097.phpt 2012-02-18 14:58:19 UTC (rev 323331)
@@ -0,0 +1,16 @@
+--TEST--
+Bug #61097 (Memory leak in xmlrpc functions copying zvals)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
+--FILE--
+<?php
+$server = xmlrpc_server_create();
+
+$method = 'abc';
+xmlrpc_server_register_introspection_callback($server, $method);
+xmlrpc_server_register_method($server, 'abc', $method);
+
+echo 'Done';
+?>
+--EXPECT--
+Done
Modified: php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c 2012-02-18 13:39:13 UTC (rev 323330)
+++ php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c 2012-02-18 14:58:19 UTC (rev 323331)
@@ -1043,9 +1043,8 @@
*/
if (XMLRPC_ServerRegisterMethod(server->server_ptr, method_key, php_xmlrpc_callback)) {
/* save for later use */
- MAKE_STD_ZVAL(method_name_save);
- *method_name_save = **method_name;
- zval_copy_ctor(method_name_save);
+ ALLOC_ZVAL(method_name_save);
+ MAKE_COPY_ZVAL(method_name, method_name_save);
/* register our php method */
add_zval(server->method_map, method_key, &method_name_save);
@@ -1073,9 +1072,8 @@
if (type == le_xmlrpc_server) {
/* save for later use */
- MAKE_STD_ZVAL(method_name_save);
- *method_name_save = **method_name;
- zval_copy_ctor(method_name_save);
+ ALLOC_ZVAL(method_name_save);
+ MAKE_COPY_ZVAL(method_name, method_name_save);
/* register our php method */
add_zval(server->introspection_map, NULL, &method_name_save);
Added: php/php-src/trunk/ext/xmlrpc/tests/bug61097.phpt
===================================================================
--- php/php-src/trunk/ext/xmlrpc/tests/bug61097.phpt (rev 0)
+++ php/php-src/trunk/ext/xmlrpc/tests/bug61097.phpt 2012-02-18 14:58:19 UTC (rev 323331)
@@ -0,0 +1,16 @@
+--TEST--
+Bug #61097 (Memory leak in xmlrpc functions copying zvals)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
+--FILE--
+<?php
+$server = xmlrpc_server_create();
+
+$method = 'abc';
+xmlrpc_server_register_introspection_callback($server, $method);
+xmlrpc_server_register_method($server, 'abc', $method);
+
+echo 'Done';
+?>
+--EXPECT--
+Done
Modified: php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c
===================================================================
--- php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c 2012-02-18 13:39:13 UTC (rev 323330)
+++ php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c 2012-02-18 14:58:19 UTC (rev 323331)
@@ -1043,9 +1043,8 @@
*/
if (XMLRPC_ServerRegisterMethod(server->server_ptr, method_key, php_xmlrpc_callback)) {
/* save for later use */
- MAKE_STD_ZVAL(method_name_save);
- *method_name_save = **method_name;
- zval_copy_ctor(method_name_save);
+ ALLOC_ZVAL(method_name_save);
+ MAKE_COPY_ZVAL(method_name, method_name_save);
/* register our php method */
add_zval(server->method_map, method_key, &method_name_save);
@@ -1073,9 +1072,8 @@
if (type == le_xmlrpc_server) {
/* save for later use */
- MAKE_STD_ZVAL(method_name_save);
- *method_name_save = **method_name;
- zval_copy_ctor(method_name_save);
+ ALLOC_ZVAL(method_name_save);
+ MAKE_COPY_ZVAL(method_name, method_name_save);
/* register our php method */
add_zval(server->introspection_map, NULL, &method_name_save);