diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/xmlrpc/tests/bug47818.phpt | |
download | php2-c4dd7a1a684490673e25aaf4fabec5df138854c4.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/xmlrpc/tests/bug47818.phpt')
-rw-r--r-- | ext/xmlrpc/tests/bug47818.phpt | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ext/xmlrpc/tests/bug47818.phpt b/ext/xmlrpc/tests/bug47818.phpt new file mode 100644 index 0000000..a2944d8 --- /dev/null +++ b/ext/xmlrpc/tests/bug47818.phpt @@ -0,0 +1,41 @@ +--TEST-- +Bug #47818 (Segfault due to bound callback param) +--SKIPIF-- +<?php if (!extension_loaded("xmlrpc")) print "skip"; ?> +--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 |