summaryrefslogtreecommitdiff
path: root/ext/xmlrpc/xmlrpc-epi-php.c
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-08-14 08:18:01 +0000
committerAntony Dovgal <tony2001@php.net>2006-08-14 08:18:01 +0000
commitcb9686b0e5a6ac1e745dd4f48e64f55f91dd89aa (patch)
tree6497965c884dba879e8e799e3e937159b2110c82 /ext/xmlrpc/xmlrpc-epi-php.c
parent284ce40c4a50f42b66ac0dff58786b74e76493b7 (diff)
downloadphp-git-cb9686b0e5a6ac1e745dd4f48e64f55f91dd89aa.tar.gz
fix segfault and leak in ext/xmlrpc
add tests
Diffstat (limited to 'ext/xmlrpc/xmlrpc-epi-php.c')
-rw-r--r--ext/xmlrpc/xmlrpc-epi-php.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/xmlrpc/xmlrpc-epi-php.c b/ext/xmlrpc/xmlrpc-epi-php.c
index 69fe7534e9..0ed30b79a1 100644
--- a/ext/xmlrpc/xmlrpc-epi-php.c
+++ b/ext/xmlrpc/xmlrpc-epi-php.c
@@ -671,6 +671,7 @@ PHP_FUNCTION(xmlrpc_encode_request)
if (Z_TYPE_PP(method) == IS_NULL) {
XMLRPC_RequestSetRequestType(xRequest, xmlrpc_request_response);
} else {
+ convert_to_string_ex(method);
XMLRPC_RequestSetMethodName(xRequest, Z_STRVAL_PP(method));
XMLRPC_RequestSetRequestType(xRequest, xmlrpc_request_call);
}
@@ -740,7 +741,7 @@ zval* decode_request_worker (zval* xml_in, zval* encoding_in, zval* method_name_
if(XMLRPC_RequestGetRequestType(response) == xmlrpc_request_call) {
if(method_name_out) {
- convert_to_string(method_name_out);
+ zval_dtor(method_name_out);
Z_TYPE_P(method_name_out) = IS_STRING;
Z_STRVAL_P(method_name_out) = estrdup(XMLRPC_RequestGetMethodName(response));
Z_STRLEN_P(method_name_out) = strlen(Z_STRVAL_P(method_name_out));