felipe          Thu Apr  2 15:52:26 2009 UTC

  Added files:                 
    /php-src/ext/xmlrpc/tests   bug47818.phpt 

  Modified files:              
    /php-src/ext/xmlrpc xmlrpc-epi-php.c 
  Log:
  - Fixed bug #47818 (Segfault due to bound callback param)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.68&r2=1.69&diff_format=u
Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c
diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.68 
php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.69
--- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.68    Thu Mar 19 00:19:20 2009
+++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Thu Apr  2 15:52:26 2009
@@ -51,7 +51,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: xmlrpc-epi-php.c,v 1.68 2009/03/19 00:19:20 iliaa Exp $ */
+/* $Id: xmlrpc-epi-php.c,v 1.69 2009/04/02 15:52:26 felipe Exp $ */
 
 /**********************************************************************
 * BUGS:                                                               *
@@ -1163,8 +1163,8 @@
                        }
 
                        /* cleanup after ourselves.  what a sty! */
-                       zval_dtor(data.xmlrpc_method);
-                       FREE_ZVAL(data.xmlrpc_method);
+                       zval_ptr_dtor(&data.xmlrpc_method);
+
                        zval_dtor(data.return_data);
                        FREE_ZVAL(data.return_data);
 

http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug47818.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlrpc/tests/bug47818.phpt
+++ php-src/ext/xmlrpc/tests/bug47818.phpt
--TEST--
Bug #47818 (Segfault due to bound callback param)
--FILE--
<?php

class MyXmlRpc {
    private $s;
    private $method;

    function impl($method_name, $params, $user_data){
        $this->method = $method_name;
        print "Inside impl(): {$this->method}\n";
        return array_sum($params);
    }

    function __construct() {
        $this->s = xmlrpc_server_create();
        xmlrpc_server_register_method($this->s, 'add', array($this, 'impl'));
    }

    function call($req) {
        return xmlrpc_server_call_method($this->s, $req, null);
    }

    function getMethod() {return $this->method;}

}

$x = new MyXmlRpc;
$resp = $x->call(xmlrpc_encode_request('add', array(1, 2, 3)));

$method = $x->getMethod();

print "Global scope: $method\n";

?>
--EXPECTF--
Inside impl(): add
Global scope: add



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

Reply via email to