tony2001 Mon Aug 14 08:15:44 2006 UTC Added files: /php-src/ext/xmlrpc/tests 001.phpt 002.phpt
Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix segfault and leak in ext/xmlrpc add tests http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.45&r2=1.46&diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.45 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.46 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.45 Fri Aug 11 17:41:49 2006 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Mon Aug 14 08:15:44 2006 @@ -51,7 +51,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: xmlrpc-epi-php.c,v 1.45 2006/08/11 17:41:49 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.46 2006/08/14 08:15:44 tony2001 Exp $ */ /********************************************************************** * BUGS: * @@ -670,6 +670,7 @@ 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); } @@ -739,7 +740,7 @@ 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)); http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/001.phpt?view=markup&rev=1.1 Index: php-src/ext/xmlrpc/tests/001.phpt +++ php-src/ext/xmlrpc/tests/001.phpt --TEST-- xmlrpc_encode_request() with wrong arguments --SKIPIF-- <?php if (!extension_loaded("xmlrpc")) print "skip"; ?> --FILE-- <?php var_dump(xmlrpc_encode_request(-1, 1)); var_dump(xmlrpc_encode_request("", 1)); var_dump(xmlrpc_encode_request(array(), 1)); var_dump(xmlrpc_encode_request(3.4, 1)); echo "Done\n"; ?> --EXPECTF-- string(174) "<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>-1</methodName> <params> <param> <value> <int>1</int> </value> </param> </params> </methodCall> " string(160) "<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName/> <params> <param> <value> <int>1</int> </value> </param> </params> </methodCall> " Notice: Array to string conversion in %s on line %d string(177) "<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>Array</methodName> <params> <param> <value> <int>1</int> </value> </param> </params> </methodCall> " string(175) "<?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>3.4</methodName> <params> <param> <value> <int>1</int> </value> </param> </params> </methodCall> " Done http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/002.phpt?view=markup&rev=1.1 Index: php-src/ext/xmlrpc/tests/002.phpt +++ php-src/ext/xmlrpc/tests/002.phpt --TEST-- xmlrpc_encode_request() and various arguments --SKIPIF-- <?php if (!extension_loaded("xmlrpc")) print "skip"; ?> --FILE-- <?php $r = xmlrpc_encode_request("method", array()); var_dump(xmlrpc_decode_request($r, $method)); var_dump($method); $r = xmlrpc_encode_request("method", 1); var_dump(xmlrpc_decode_request($r, $method)); var_dump($method); $r = xmlrpc_encode_request("method", 'param'); var_dump(xmlrpc_decode_request($r, $method)); var_dump($method); $r = xmlrpc_encode_request(-1, ""); var_dump(xmlrpc_decode_request($r, $method)); var_dump($method); $r = xmlrpc_encode_request(array(), 1); var_dump(xmlrpc_decode_request($r, $method)); var_dump($method); echo "Done\n"; ?> --EXPECTF-- array(0) { } string(6) "method" array(1) { [0]=> int(1) } string(6) "method" array(1) { [0]=> string(5) "param" } string(6) "method" array(1) { [0]=> string(0) "" } string(2) "-1" Notice: Array to string conversion in %s on line %d array(1) { [0]=> int(1) } string(5) "Array" Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php