mirror of
https://github.com/php/php-src.git
synced 2026-04-29 11:13:36 +02:00
- MFH: Fixed bug #47818 (Segfault due to bound callback param)
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
--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
|
||||
@@ -1157,8 +1157,8 @@ PHP_FUNCTION(xmlrpc_server_call_method)
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user