From 7a369dc593da48bb4b0382a8f9861e5f86751dfa Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Mon, 12 Nov 2007 11:24:13 +0000 Subject: MFH: fix #42736 (xmlrpc_server_call_method() crashes) --- ext/xmlrpc/tests/bug42736.phpt | 56 ++++++++++++++++++++++++++++++++++++++++++ ext/xmlrpc/xmlrpc-epi-php.c | 5 ++-- 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 ext/xmlrpc/tests/bug42736.phpt (limited to 'ext/xmlrpc') diff --git a/ext/xmlrpc/tests/bug42736.phpt b/ext/xmlrpc/tests/bug42736.phpt new file mode 100644 index 0000000000..b9a46cff5c --- /dev/null +++ b/ext/xmlrpc/tests/bug42736.phpt @@ -0,0 +1,56 @@ +--TEST-- +Bug #42736 (xmlrpc_server_call_method() crashes) +--SKIPIF-- + +--FILE-- +add($id); + } +} + +$xml = xmlrpc_server_create(); + +$Myrequest = 'GetProducts20060922T14:26:19'; + +class MyClass { + function GetProducts($dummy, $time){ + return array('faultString' => $time); + } +} +$myclass = new MyClass(); +xmlrpc_server_register_method($xml, 'GetProducts', array($myclass, 'GetProducts')); +$response = xmlrpc_server_call_method($xml, $Myrequest, null); + +var_dump($response); + +echo "Done\n"; +?> +--EXPECTF-- +string(402) " + + + + + + + faultString + + + + + 20060922T14:26:19 + + + + + + + + + + +" +Done diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c index c0918a6cbd..c750a4fdef 100644 --- a/ext/xmlrpc/xmlrpc-epi-php.c +++ b/ext/xmlrpc/xmlrpc-epi-php.c @@ -874,10 +874,9 @@ static XMLRPC_VALUE php_xmlrpc_callback(XMLRPC_SERVER server, XMLRPC_REQUEST xRe pData->php_executed = 1; - zval_dtor(xmlrpc_params); - FREE_ZVAL(xmlrpc_params); + zval_ptr_dtor(&xmlrpc_params); - return NULL; + return NULL; } /* called by the C server when it first receives an introspection request. We pass this on to -- cgit v1.2.1