nikic                                    Sat, 03 Mar 2012 12:46:17 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=323850

Log:
Fix bug #61264: xmlrpc_parse_method_descriptions leaks temporary variable

Bug: https://bugs.php.net/61264 (Open) xmlrpc_parse_method_descriptions leaks 
temporary variable
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    A   php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61264.phpt
    U   php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c
    U   php/php-src/branches/PHP_5_4/NEWS
    A   php/php-src/branches/PHP_5_4/ext/xmlrpc/tests/bug61264.phpt
    U   php/php-src/branches/PHP_5_4/ext/xmlrpc/xmlrpc-epi-php.c
    A   php/php-src/trunk/ext/xmlrpc/tests/bug61264.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-03-02 23:07:19 UTC (rev 323849)
+++ php/php-src/branches/PHP_5_3/NEWS   2012-03-03 12:46:17 UTC (rev 323850)
@@ -73,6 +73,7 @@

 - 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)

Added: php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61264.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61264.phpt                 
        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/xmlrpc/tests/bug61264.phpt 2012-03-03 
12:46:17 UTC (rev 323850)
@@ -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"
+}

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-03-02 
23:07:19 UTC (rev 323849)
+++ php/php-src/branches/PHP_5_3/ext/xmlrpc/xmlrpc-epi-php.c    2012-03-03 
12:46:17 UTC (rev 323850)
@@ -1240,8 +1240,7 @@
                        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);

Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS   2012-03-02 23:07:19 UTC (rev 323849)
+++ php/php-src/branches/PHP_5_4/NEWS   2012-03-03 12:46:17 UTC (rev 323850)
@@ -48,6 +48,7 @@

 - XMLRPC:
   . Fixed bug #61097 (Memory leak in xmlrpc functions copying zvals). (Nikita 
Popov)
+  . Fixed bug #61264 (xmlrpc_parse_method_descriptions leaks temporary 
variable). (Nikita Popov)

 - Zlib:
   . Fixed bug #61139 (gzopen leaks when specifying invalid mode). (Nikita 
Popov)

Added: php/php-src/branches/PHP_5_4/ext/xmlrpc/tests/bug61264.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/xmlrpc/tests/bug61264.phpt                 
        (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/xmlrpc/tests/bug61264.phpt 2012-03-03 
12:46:17 UTC (rev 323850)
@@ -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"
+}

Modified: php/php-src/branches/PHP_5_4/ext/xmlrpc/xmlrpc-epi-php.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/xmlrpc/xmlrpc-epi-php.c    2012-03-02 
23:07:19 UTC (rev 323849)
+++ php/php-src/branches/PHP_5_4/ext/xmlrpc/xmlrpc-epi-php.c    2012-03-03 
12:46:17 UTC (rev 323850)
@@ -1240,8 +1240,7 @@
                        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);

Added: php/php-src/trunk/ext/xmlrpc/tests/bug61264.phpt
===================================================================
--- php/php-src/trunk/ext/xmlrpc/tests/bug61264.phpt                            
(rev 0)
+++ php/php-src/trunk/ext/xmlrpc/tests/bug61264.phpt    2012-03-03 12:46:17 UTC 
(rev 323850)
@@ -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"
+}

Modified: php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c
===================================================================
--- php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c       2012-03-02 23:07:19 UTC 
(rev 323849)
+++ php/php-src/trunk/ext/xmlrpc/xmlrpc-epi-php.c       2012-03-03 12:46:17 UTC 
(rev 323850)
@@ -1240,8 +1240,7 @@
                        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);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to