[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
felipe Fri May 22 12:49:22 2009 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - Fixed invalid date checking http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.72r2=1.73diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.72 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.73 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.72Tue May 19 16:32:22 2009 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Fri May 22 12:49:22 2009 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.72 2009/05/19 16:32:22 kalle Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.73 2009/05/22 12:49:22 felipe Exp $ */ /** * BUGS: * @@ -1352,7 +1352,7 @@ XMLRPC_VALUE v = XMLRPC_CreateValueDateTime_ISO8601(NULL, value-value.str.val); if (v) { time_t timestamp = (time_t) php_parse_date((char *)XMLRPC_GetValueDateTime_ISO8601(v), NULL); - if (timestamp) { + if (timestamp != -1) { zval* ztimestamp; MAKE_STD_ZVAL(ztimestamp); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
iliaa Thu May 14 12:30:06 2009 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: MFB: Fixed compiler warnings http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.70r2=1.71diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.70 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.71 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.70Wed May 13 14:23:29 2009 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Thu May 14 12:30:06 2009 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.70 2009/05/13 14:23:29 iliaa Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.71 2009/05/14 12:30:06 iliaa Exp $ */ /** * BUGS: * @@ -67,6 +67,7 @@ #include php.h #include ext/standard/info.h +#include ext/date/php_date.h #include php_ini.h #include php_xmlrpc.h #include xmlrpc.h @@ -1350,7 +1351,7 @@ if (newtype == xmlrpc_datetime) { XMLRPC_VALUE v = XMLRPC_CreateValueDateTime_ISO8601(NULL, value-value.str.val); if (v) { - time_t timestamp = (time_t) php_parse_date(XMLRPC_GetValueDateTime_ISO8601(v), NULL); + time_t timestamp = (time_t) php_parse_date((char *)XMLRPC_GetValueDateTime_ISO8601(v), NULL); if (timestamp) { zval* ztimestamp; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
iliaa Wed May 13 14:23:29 2009 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: MFB: Fixed bug #44996 (xmlrpc_decode() ignores time zone on iso8601.datetime) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.69r2=1.70diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.69 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.70 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.69Thu Apr 2 15:52:26 2009 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Wed May 13 14:23:29 2009 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.69 2009/04/02 15:52:26 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.70 2009/05/13 14:23:29 iliaa Exp $ */ /** * BUGS: * @@ -1350,8 +1350,8 @@ if (newtype == xmlrpc_datetime) { XMLRPC_VALUE v = XMLRPC_CreateValueDateTime_ISO8601(NULL, value-value.str.val); if (v) { - time_t timestamp = XMLRPC_GetValueDateTime(v); - if (timestamp) { + time_t timestamp = (time_t) php_parse_date(XMLRPC_GetValueDateTime_ISO8601(v), NULL); + if (timestamp) { zval* ztimestamp; MAKE_STD_ZVAL(ztimestamp); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/tests bug47818.phpt
felipe Thu Apr 2 15:52:26 2009 UTC Added files: /php-src/ext/xmlrpc/tests bug47818.phpt Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - Fixed bug #47818 (Segfault due to bound callback param) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.68r2=1.69diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.68 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.69 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.68Thu Mar 19 00:19:20 2009 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Thu Apr 2 15:52:26 2009 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.68 2009/03/19 00:19:20 iliaa Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.69 2009/04/02 15:52:26 felipe Exp $ */ /** * BUGS: * @@ -1163,8 +1163,8 @@ } /* 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); http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug47818.phpt?view=markuprev=1.1 Index: php-src/ext/xmlrpc/tests/bug47818.phpt +++ php-src/ext/xmlrpc/tests/bug47818.phpt --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 -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
iliaa Thu Mar 19 00:19:20 2009 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: MFB:Improved parameter parsing http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.67r2=1.68diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.67 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.68 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.67Tue Mar 10 23:39:52 2009 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Thu Mar 19 00:19:20 2009 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.67 2009/03/10 23:39:52 helly Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.68 2009/03/19 00:19:20 iliaa Exp $ */ /** * BUGS: * @@ -687,14 +687,14 @@ { XMLRPC_REQUEST xRequest = NULL; char *outBuf; - zval **method, **vals, *out_opts; + zval **method, **vals, *out_opts = NULL; php_output_options out; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ZZ|a, method, vals, out_opts) == FAILURE) { return; } - set_output_options(out, (ZEND_NUM_ARGS() == 3) ? out_opts : 0); + set_output_options(out, out_opts ? out_opts : 0); if (return_value_used) { xRequest = XMLRPC_RequestNew(); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
felipe Sat Dec 27 19:06:19 2008 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - Fixed code (comparison with string literal) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.64r2=1.65diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.64 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.65 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.64Mon Nov 17 11:26:24 2008 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Sat Dec 27 19:06:19 2008 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.64 2008/11/17 11:26:24 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.65 2008/12/27 19:06:19 felipe Exp $ */ /** * BUGS: * @@ -721,7 +721,7 @@ } } - if (out.xmlrpc_out.xml_elem_opts.encoding != ENCODING_DEFAULT) { + if (strcmp(out.xmlrpc_out.xml_elem_opts.encoding, ENCODING_DEFAULT) != 0) { efree((char *)out.xmlrpc_out.xml_elem_opts.encoding); } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
felipe Sun Aug 24 00:45:20 2008 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - MFB: New parameter parsing API - WS, Cosmetics http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.60r2=1.61diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.60 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.61 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.60Fri Aug 15 22:13:58 2008 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Sun Aug 24 00:45:20 2008 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.60 2008/08/15 22:13:58 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.61 2008/08/24 00:45:20 felipe Exp $ */ /** * BUGS: * @@ -265,7 +265,7 @@ XMLRPC_VALUE_TYPE get_zval_xmlrpc_type(zval* value, zval** newvalue); static void php_xmlrpc_introspection_callback(XMLRPC_SERVER server, void* data); int sset_zval_xmlrpc_type(zval* value, XMLRPC_VALUE_TYPE type); -zval* decode_request_worker(zval* xml_in, zval* encoding_in, zval* method_name_out); +zval* decode_request_worker(char *xml_in, int xml_in_len, char *encoding_in, zval* method_name_out); const char* xmlrpc_type_as_str(XMLRPC_VALUE_TYPE type, XMLRPC_VECTOR_TYPE vtype); XMLRPC_VALUE_TYPE xmlrpc_str_as_type(const char* str); XMLRPC_VECTOR_TYPE xmlrpc_str_as_vector_type(const char* str); @@ -437,29 +437,29 @@ } /* encoding code set */ - if(zend_hash_find(Z_ARRVAL_P(output_opts), ENCODING_KEY, ENCODING_KEY_LEN + 1, (void**)val) == SUCCESS) { - if(Z_TYPE_PP(val) == IS_STRING) { + if (zend_hash_find(Z_ARRVAL_P(output_opts), ENCODING_KEY, ENCODING_KEY_LEN + 1, (void**)val) == SUCCESS) { + if (Z_TYPE_PP(val) == IS_STRING) { options-xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_PP(val)); } } /* escaping options */ - if(zend_hash_find(Z_ARRVAL_P(output_opts), ESCAPING_KEY, ESCAPING_KEY_LEN + 1, (void**)val) == SUCCESS) { + if (zend_hash_find(Z_ARRVAL_P(output_opts), ESCAPING_KEY, ESCAPING_KEY_LEN + 1, (void**)val) == SUCCESS) { /* multiple values allowed. check if array */ - if(Z_TYPE_PP(val) == IS_ARRAY) { + if (Z_TYPE_PP(val) == IS_ARRAY) { zval** iter_val; zend_hash_internal_pointer_reset(Z_ARRVAL_PP(val)); options-xmlrpc_out.xml_elem_opts.escaping = xml_elem_no_escaping; - while(1) { - if(zend_hash_get_current_data(Z_ARRVAL_PP(val), (void**)iter_val) == SUCCESS) { - if(Z_TYPE_PP(iter_val) == IS_STRING Z_STRVAL_PP(iter_val)) { - if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_CDATA)) { + while (1) { + if (zend_hash_get_current_data(Z_ARRVAL_PP(val), (void**)iter_val) == SUCCESS) { + if (Z_TYPE_PP(iter_val) == IS_STRING Z_STRVAL_PP(iter_val)) { + if (!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_CDATA)) { options-xmlrpc_out.xml_elem_opts.escaping |= xml_elem_cdata_escaping; - } else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_ASCII)) { + } else if (!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_ASCII)) { options-xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_ascii_escaping; - } else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_PRINT)) { + } else if (!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_NON_PRINT)) { options-xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_print_escaping; - } else if(!strcmp(Z_STRVAL_PP(iter_val), ESCAPING_VALUE_MARKUP)) { +
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
felipe Fri Aug 15 22:13:59 2008 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - Fix build http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.59r2=1.60diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.59 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.60 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.59Sat Aug 2 04:40:45 2008 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Fri Aug 15 22:13:58 2008 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.59 2008/08/02 04:40:45 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.60 2008/08/15 22:13:58 felipe Exp $ */ /** * BUGS: * @@ -275,7 +275,7 @@ * startup / shutdown * */ -static void destroy_server_data(xmlrpc_server_data *server) /* {{{ */ +static void destroy_server_data(xmlrpc_server_data *server TSRMLS_DC) /* {{{ */ { if (server) { XMLRPC_ServerDestroy(server-server_ptr); @@ -296,7 +296,7 @@ static void xmlrpc_server_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ { if (rsrc rsrc-ptr) { - destroy_server_data((xmlrpc_server_data*) rsrc-ptr); + destroy_server_data((xmlrpc_server_data*) rsrc-ptr TSRMLS_CC); } } /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/tests bug45555.phpt bug45556.phpt
felipe Sun Jul 20 15:52:07 2008 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c /php-src/ext/xmlrpc/tests bug4.phpt bug45556.phpt Log: MFB: - Fixed bug #45556 (Return value from callback isn't freed). - Fixed bug #4 (Segfault with invalid non-string as register_introspection_callback). - Fixed wrong arginfo for xmlrpc_encode_request() http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.57r2=1.58diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.57 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.58 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.57Mon Jun 30 13:47:22 2008 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Sun Jul 20 15:52:06 2008 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.57 2008/06/30 13:47:22 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.58 2008/07/20 15:52:06 felipe Exp $ */ /** * BUGS: * @@ -97,7 +97,7 @@ static ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_encode_request, 0, 0, 2) ZEND_ARG_INFO(0, method) - ZEND_ARG_INFO(1, params) + ZEND_ARG_INFO(0, params) ZEND_ARG_INFO(0, output_options) ZEND_END_ARG_INFO() @@ -951,58 +951,54 @@ */ static void php_xmlrpc_introspection_callback(XMLRPC_SERVER server, void* data) /* {{{ */ { - zval *retval_ptr, **php_function; + zval retval, **php_function; zval* callback_params[1]; + zval php_function_name; xmlrpc_callback_data* pData = (xmlrpc_callback_data*)data; TSRMLS_FETCH(); - MAKE_STD_ZVAL(retval_ptr); - Z_TYPE_P(retval_ptr) = IS_NULL; - /* setup data hoojum */ callback_params[0] = pData-caller_params; /* loop through and call all registered callbacks */ zend_hash_internal_pointer_reset(Z_ARRVAL_P(pData-server-introspection_map)); while(1) { - if(zend_hash_get_current_data(Z_ARRVAL_P(pData-server-introspection_map), - (void**)php_function) == SUCCESS) { - - /* php func prototype: function string user_func($user_params) */ - if(call_user_function(CG(function_table), NULL, *php_function, - retval_ptr, 1, callback_params TSRMLS_CC) == SUCCESS) { - XMLRPC_VALUE xData; - STRUCT_XMLRPC_ERROR err = {0}; - - /* return value should be a string */ - convert_to_string(retval_ptr); - - xData = XMLRPC_IntrospectionCreateDescription(Z_STRVAL_P(retval_ptr), err); - - if(xData) { - if(!XMLRPC_ServerAddIntrospectionData(server, xData)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to add introspection data returned from %s(), improper element structure, Z_STRVAL_PP(php_function)); - } - XMLRPC_CleanupValue(xData); - } - else { - /* could not create description */ - if(err.xml_elem_error.parser_code) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, xml parse error: [line %ld, column %ld, message: %s] Unable to add introspection data returned from %s(), - err.xml_elem_error.column, err.xml_elem_error.line, err.xml_elem_error.parser_error, Z_STRVAL_PP(php_function)); - } - else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to add introspection data returned from %s(), - Z_STRVAL_PP(php_function)); + if(zend_hash_get_current_data(Z_ARRVAL_P(pData-server-introspection_map), (void**)php_function) == SUCCESS) { + if (zend_is_callable(*php_function, 0, php_function_name)) { + /* php func prototype: function string user_func($user_params) */ + if (call_user_function(CG(function_table), NULL, *php_function, retval, 1, callback_params TSRMLS_CC) == SUCCESS) { + XMLRPC_VALUE xData; + STRUCT_XMLRPC_ERROR err = {0}; + + /* return value should be a string */ +
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
felipe Sat Jun 28 22:19:24 2008 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: - MFB: Added arginfo http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.55r2=1.56diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.55 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.56 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.55Thu Feb 28 14:16:25 2008 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Sat Jun 28 22:19:24 2008 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.55 2008/02/28 14:16:25 felipe Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.56 2008/06/28 22:19:24 felipe Exp $ */ /** * BUGS: * @@ -75,21 +75,100 @@ static int le_xmlrpc_server; +/* {{{ arginfo */ +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_encode, 0, 0, 1) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_decode, 0, 0, 1) + ZEND_ARG_INFO(0, value) + ZEND_ARG_INFO(0, encoding) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_decode_request, 0, 0, 2) + ZEND_ARG_INFO(0, xml) + ZEND_ARG_INFO(1, method) + ZEND_ARG_INFO(0, encoding) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_encode_request, 0, 0, 2) + ZEND_ARG_INFO(0, method) + ZEND_ARG_INFO(1, params) + ZEND_ARG_INFO(0, output_options) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_set_type, 0, 0, 2) + ZEND_ARG_INFO(1, value) + ZEND_ARG_INFO(0, type) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_is_fault, 0, 0, 1) + ZEND_ARG_INFO(0, arg) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO(arginfo_xmlrpc_server_create, 0) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_server_destroy, 0, 0, 1) + ZEND_ARG_INFO(0, server) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_server_register_method, 0, 0, 3) + ZEND_ARG_INFO(0, server) + ZEND_ARG_INFO(0, method_name) + ZEND_ARG_INFO(0, function) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_server_call_method, 0, 0, 3) + ZEND_ARG_INFO(0, server) + ZEND_ARG_INFO(0, xml) + ZEND_ARG_INFO(0, user_data) + ZEND_ARG_INFO(0, output_options) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_parse_method_descriptions, 0, 0, 1) + ZEND_ARG_INFO(0, xml) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_server_add_introspection_data, 0, 0, 2) + ZEND_ARG_INFO(0, server) + ZEND_ARG_INFO(0, desc) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_xmlrpc_server_register_introspection_callback, 0, 0, 2) + ZEND_ARG_INFO(0, server) + ZEND_ARG_INFO(0, function) +ZEND_END_ARG_INFO() +/* }}} */ + const zend_function_entry xmlrpc_functions[] = { - PHP_FE(xmlrpc_encode, NULL) - PHP_FE(xmlrpc_decode, NULL) - PHP_FE(xmlrpc_decode_request, second_arg_force_ref) - PHP_FE(xmlrpc_encode_request, NULL) - PHP_FE(xmlrpc_get_type, NULL) - PHP_FE(xmlrpc_set_type, first_arg_force_ref) - PHP_FE(xmlrpc_is_fault, NULL) - PHP_FE(xmlrpc_server_create, NULL) - PHP_FE(xmlrpc_server_destroy, NULL) - PHP_FE(xmlrpc_server_register_method, NULL) - PHP_FE(xmlrpc_server_call_method, NULL) - PHP_FE(xmlrpc_parse_method_descriptions, NULL) - PHP_FE(xmlrpc_server_add_introspection_data,NULL) - PHP_FE(xmlrpc_server_register_introspection_callback, NULL) + PHP_FE(xmlrpc_encode, arginfo_xmlrpc_encode) + PHP_FE(xmlrpc_decode, arginfo_xmlrpc_decode) + PHP_FE(xmlrpc_decode_request, arginfo_xmlrpc_decode_request) + PHP_FE(xmlrpc_encode_request, arginfo_xmlrpc_encode_request) +
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/tests bug42736.phpt
tony2001Mon Nov 12 11:22:00 2007 UTC Added files: /php-src/ext/xmlrpc/tests bug42736.phpt Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix #42736 (xmlrpc_server_call_method() crashes) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.52r2=1.53diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.52 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.53 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.52Thu Sep 27 18:28:43 2007 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Mon Nov 12 11:22:00 2007 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.52 2007/09/27 18:28:43 dmitry Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.53 2007/11/12 11:22:00 tony2001 Exp $ */ /** * BUGS: * @@ -864,8 +864,7 @@ pData-php_executed = 1; - zval_dtor(xmlrpc_params); - FREE_ZVAL(xmlrpc_params); + zval_ptr_dtor(xmlrpc_params); return NULL; } http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug42736.phpt?view=markuprev=1.1 Index: php-src/ext/xmlrpc/tests/bug42736.phpt +++ php-src/ext/xmlrpc/tests/bug42736.phpt --TEST-- Bug #42736 (xmlrpc_server_call_method() crashes) --SKIPIF-- ?php if (!extension_loaded(xmlrpc)) print skip; ? --FILE-- ?php class SOAP_Array { public function get($id){ return $this-add($id); } } $xml = xmlrpc_server_create(); $Myrequest = '?xml version=1.0 encoding=UTF-8?methodCallmethodNameGetProducts/methodNameparamsparamvaluedateTime.iso860120060922T14:26:19/dateTime.iso8601/value/param/params/methodCall'; 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) ?xml version=1.0 encoding=iso-8859-1? methodResponse params param value struct member namefaultString/name value array data value dateTime.iso860120060922T14:26:19/dateTime.iso8601 /value /data /array /value /member /struct /value /param /params /methodResponse Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/libxmlrpc xmlrpc.c /ext/xmlrpc/tests bug42189.phpt
iliaa Tue Sep 18 19:52:28 2007 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c /php-src/ext/xmlrpc/libxmlrpc xmlrpc.c /php-src/ext/xmlrpc/tests bug42189.phpt Log: MFB: Fixed bug #42189 (xmlrpc_set_type() crashes php on invalid datetime values). http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.50r2=1.51diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.50 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.51 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.50Thu Jul 12 10:04:42 2007 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Tue Sep 18 19:52:27 2007 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.50 2007/07/12 10:04:42 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.51 2007/09/18 19:52:27 iliaa Exp $ */ /** * BUGS: * @@ -1313,8 +1313,12 @@ if(SUCCESS == zend_hash_update(Z_OBJPROP_P(value), OBJECT_TYPE_ATTR, sizeof(OBJECT_TYPE_ATTR), (void *) type, sizeof(zval *), NULL)) { bSuccess = zend_hash_update(Z_OBJPROP_P(value), OBJECT_VALUE_TS_ATTR, sizeof(OBJECT_VALUE_TS_ATTR), (void *) ztimestamp, sizeof(zval *), NULL); } + } else { + zval_ptr_dtor(type); } XMLRPC_CleanupValue(v); + } else { + zval_ptr_dtor(type); } } else { http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c?r1=1.11r2=1.12diff_format=u Index: php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c diff -u php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c:1.11 php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c:1.12 --- php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c:1.11 Thu Jun 7 09:07:12 2007 +++ php-src/ext/xmlrpc/libxmlrpc/xmlrpc.c Tue Sep 18 19:52:27 2007 @@ -31,7 +31,7 @@ */ -static const char rcsid[] = #(@) $Id: xmlrpc.c,v 1.11 2007/06/07 09:07:12 tony2001 Exp $; +static const char rcsid[] = #(@) $Id: xmlrpc.c,v 1.12 2007/09/18 19:52:27 iliaa Exp $; /h* ABOUT/xmlrpc @@ -43,6 +43,11 @@ * 9/1999 - 10/2000 * HISTORY * $Log: xmlrpc.c,v $ + * Revision 1.12 2007/09/18 19:52:27 iliaa + * + * MFB: Fixed bug #42189 (xmlrpc_set_type() crashes php on invalid datetime + * values). + * * Revision 1.11 2007/06/07 09:07:12 tony2001 * php_localtime_r() checks * @@ -179,7 +184,7 @@ } p++; } - text = buf; + text = buf; } @@ -189,15 +194,19 @@ return -1; } +#define XMLRPC_IS_NUMBER(x) if (x '0' || x '9') return -1; + n = 1000; tm.tm_year = 0; for(i = 0; i 4; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_year += (text[i]-'0')*n; n /= 10; } n = 10; tm.tm_mon = 0; for(i = 0; i 2; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_mon += (text[i+4]-'0')*n; n /= 10; } @@ -206,6 +215,7 @@ n = 10; tm.tm_mday = 0; for(i = 0; i 2; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_mday += (text[i+6]-'0')*n; n /= 10; } @@ -213,6 +223,7 @@ n = 10; tm.tm_hour = 0; for(i = 0; i 2; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_hour += (text[i+9]-'0')*n; n /= 10; } @@ -220,6 +231,7 @@ n = 10; tm.tm_min = 0; for(i = 0; i 2; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_min += (text[i+12]-'0')*n; n /= 10; } @@ -227,6 +239,7 @@ n = 10; tm.tm_sec = 0; for(i = 0; i 2; i++) { + XMLRPC_IS_NUMBER(text[i]) tm.tm_sec += (text[i+15]-'0')*n; n /= 10; } http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug42189.phpt?r1=1.1r2=1.2diff_format=u Index: php-src/ext/xmlrpc/tests/bug42189.phpt diff -u /dev/null php-src/ext/xmlrpc/tests/bug42189.phpt:1.2 --- /dev/null Tue Sep 18 19:52:28 2007 +++ php-src/ext/xmlrpc/tests/bug42189.phpt Tue Sep 18 19:52:27 2007 @@ -0,0 +1,15 @@ +--TEST-- +Bug #42189 (xmlrpc_get_type() crashes PHP on invalid dates) +--SKIPIF-- +?php if (!extension_loaded(xmlrpc)) print skip; ? +--FILE-- +?php +$a = '~~'; +$ok = xmlrpc_set_type($a, 'datetime'); +var_dump($ok); + +echo Done\n; +? +--EXPECT-- +bool(false) +Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
tony2001Thu Jul 12 10:04:42 2007 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix ws, cs and folding http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.49r2=1.50diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.49 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.50 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.49Fri Jan 12 12:31:31 2007 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Thu Jul 12 10:04:42 2007 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.49 2007/01/12 12:31:31 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.50 2007/07/12 10:04:42 tony2001 Exp $ */ /** * BUGS: * @@ -199,7 +199,7 @@ * startup / shutdown * */ -static void destroy_server_data(xmlrpc_server_data *server) +static void destroy_server_data(xmlrpc_server_data *server) /* {{{ */ { if (server) { XMLRPC_ServerDestroy(server-server_ptr); @@ -213,26 +213,28 @@ efree(server); } } +/* }}} */ /* called when server is being destructed. either when xmlrpc_server_destroy * is called, or when request ends. */ -static void xmlrpc_server_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void xmlrpc_server_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ { if (rsrc rsrc-ptr) { destroy_server_data((xmlrpc_server_data*) rsrc-ptr); } } +/* }}} */ /* module init */ -PHP_MINIT_FUNCTION(xmlrpc) +PHP_MINIT_FUNCTION(xmlrpc) /* {{{ */ { le_xmlrpc_server = zend_register_list_destructors_ex(xmlrpc_server_destructor, NULL, xmlrpc server, module_number); - return SUCCESS; } +/* }}} */ /* display info in phpinfo() */ -PHP_MINFO_FUNCTION(xmlrpc) +PHP_MINFO_FUNCTION(xmlrpc) /* {{{ */ { php_info_print_table_start(); php_info_print_table_row(2, core library version, XMLRPC_GetVersionString()); @@ -242,10 +244,11 @@ php_info_print_table_row(2, open sourced by, Epinions.com); php_info_print_table_end(); } +/* }}} */ /*** -* random utilities * -***/ + * random utilities * + ***/ /* Utility functions for adding data types to arrays, with or without key (assoc, non-assoc). * Could easily be further generalized to work with objects. @@ -273,7 +276,7 @@ #endif -static int add_zval(zval* list, const char* id, zval** val) +static int add_zval(zval* list, const char* id, zval** val) /* {{{ */ { if (list val) { if (id) { @@ -291,17 +294,18 @@ /* what is the correct return on error? */ return 0; } +/* }}} */ #define my_zend_hash_get_current_key(ht, my_key, num_index) zend_hash_get_current_key(ht, my_key, num_index, 0) /* -* input / output options * -*/ + * input / output options * + */ /* parse an array (user input) into output options suitable for use by xmlrpc engine * and determine whether to return data as xml or php vars */ -static void set_output_options(php_output_options* options, zval* output_opts) +static void set_output_options(php_output_options* options, zval* output_opts) /* {{{ */ { if (options) { @@ -349,280 +353,270 @@ } else if (!strcmp(Z_STRVAL_PP(val), VERSION_VALUE_SIMPLE)) { options-xmlrpc_out.version = xmlrpc_version_simple; } else if (!strcmp((*val)-value.str.val, VERSION_VALUE_SOAP11)) { - options-xmlrpc_out.version = xmlrpc_version_soap_1_1; - } else { /* if(!strcmp((*val)-value.str.val, VERSION_VALUE_AUTO)) { */ - options-b_auto_version = 1; + options-xmlrpc_out.version = xmlrpc_version_soap_1_1; + } else { /* if(!strcmp((*val)-value.str.val, VERSION_VALUE_AUTO)) */ + options-b_auto_version = 1; } } } - /* encoding code set */ - if(zend_hash_find(Z_ARRVAL_P(output_opts), - ENCODING_KEY, ENCODING_KEY_LEN + 1, - (void**)val) == SUCCESS) { -if(Z_TYPE_PP(val) == IS_STRING) { - options-xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_PP(val)); -} - }
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
tony2001Mon Nov 13 12:49:18 2006 UTC Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix compile warning http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.46r2=1.47diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.46 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.47 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.46Mon Aug 14 08:15:44 2006 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Mon Nov 13 12:49:18 2006 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.46 2006/08/14 08:15:44 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.47 2006/11/13 12:49:18 tony2001 Exp $ */ /** * BUGS: * @@ -688,7 +688,7 @@ } if (out.xmlrpc_out.xml_elem_opts.encoding != ENCODING_DEFAULT) { - efree(out.xmlrpc_out.xml_elem_opts.encoding); + efree((char *)out.xmlrpc_out.xml_elem_opts.encoding); } } /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/tests 001.phpt 002.phpt
tony2001Mon 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.45r2=1.46diff_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.45Fri 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=markuprev=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 int1/int /value /param /params /methodCall string(160) ?xml version=1.0 encoding=iso-8859-1? methodCall methodName/ params param value int1/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 methodNameArray/methodName params param value int1/int /value /param /params /methodCall string(175) ?xml version=1.0 encoding=iso-8859-1? methodCall methodName3.4/methodName params param value int1/int /value /param /params /methodCall Done http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/002.phpt?view=markuprev=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
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c /ext/xmlrpc/tests bug38431.phpt
tony2001Fri Aug 11 17:41:49 2006 UTC Added files: /php-src/ext/xmlrpc/tests bug38431.phpt Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix #38431 (xmlrpc_get_type() crashes PHP on objects) http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.44r2=1.45diff_format=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.44 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.45 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.44Wed Apr 12 15:14:43 2006 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Fri Aug 11 17:41:49 2006 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.44 2006/04/12 15:14:43 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.45 2006/08/11 17:41:49 tony2001 Exp $ */ /** * BUGS: * @@ -1467,7 +1467,7 @@ type = get_zval_xmlrpc_type(*arg, 0); if (type == xmlrpc_vector) { - vtype = determine_vector_type(Z_ARRVAL_PP(arg)); + vtype = determine_vector_type((Z_TYPE_PP(arg) == IS_OBJECT) ? Z_OBJPROP_PP(arg) : Z_ARRVAL_PP(arg)); } RETURN_STRING((char*) xmlrpc_type_as_str(type, vtype), 1); http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/bug38431.phpt?view=markuprev=1.1 Index: php-src/ext/xmlrpc/tests/bug38431.phpt +++ php-src/ext/xmlrpc/tests/bug38431.phpt --TEST-- Bug #38431 (xmlrpc_get_type() crashes PHP on objects) --SKIPIF-- ?php if (!extension_loaded(xmlrpc)) print skip; ? --FILE-- ?php var_dump(xmlrpc_get_type(new stdclass)); var_dump(xmlrpc_get_type(array())); $var = array(1,2,3); var_dump(xmlrpc_get_type($var)); $var = array(test=1,2,3); var_dump(xmlrpc_get_type($var)); $var = array(test=1,test2=2); var_dump(xmlrpc_get_type($var)); echo Done\n; ? --EXPECTF-- string(5) array string(5) array string(5) array string(5) mixed string(6) struct Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
rrichards Wed Oct 5 12:39:38 2005 EDT Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix ZTS build http://cvs.php.net/diff.php/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.40r2=1.41ty=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.40 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.41 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.40Tue Oct 4 08:07:24 2005 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Wed Oct 5 12:39:37 2005 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.40 2005/10/04 12:07:24 tony2001 Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.41 2005/10/05 16:39:37 rrichards Exp $ */ /** * BUGS: * @@ -478,7 +478,7 @@ } /* recursively convert php values into xmlrpc values */ -static XMLRPC_VALUE PHP_to_XMLRPC_worker (const char* key, zval* in_val, int depth) +static XMLRPC_VALUE PHP_to_XMLRPC_worker (const char* key, zval* in_val, int depth TSRMLS_DC) { XMLRPC_VALUE xReturn = NULL; if(in_val) { @@ -544,10 +544,10 @@ ht-nApplyCount++; } if (res == HASH_KEY_IS_LONG) { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++)); + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++ TSRMLS_CC)); } else { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++)); + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++ TSRMLS_CC)); } if (ht) { ht-nApplyCount--; @@ -566,9 +566,9 @@ return xReturn; } -static XMLRPC_VALUE PHP_to_XMLRPC(zval* root_val) +static XMLRPC_VALUE PHP_to_XMLRPC(zval* root_val TSRMLS_DC) { - return PHP_to_XMLRPC_worker(NULL, root_val, 0); + return PHP_to_XMLRPC_worker(NULL, root_val, 0 TSRMLS_CC); } /* recursively convert xmlrpc values into php values */ @@ -668,7 +668,7 @@ XMLRPC_RequestSetRequestType(xRequest, xmlrpc_request_call); } if (Z_TYPE_PP(vals) != IS_NULL) { - XMLRPC_RequestSetData(xRequest, PHP_to_XMLRPC(*vals)); + XMLRPC_RequestSetData(xRequest, PHP_to_XMLRPC(*vals TSRMLS_CC)); } outBuf = XMLRPC_REQUEST_ToXML(xRequest, 0); @@ -700,7 +700,7 @@ if( return_value_used ) { /* convert native php type to xmlrpc type */ - xOut = PHP_to_XMLRPC(*arg1); + xOut = PHP_to_XMLRPC(*arg1 TSRMLS_CC); /* generate raw xml from xmlrpc data */ outBuf = XMLRPC_VALUE_ToXML(xOut, 0); @@ -1102,7 +1102,7 @@ FREE_ZVAL(data.return_data); data.return_data = XMLRPC_to_PHP(xAnswer); } else if(data.php_executed !out.b_php_out) { - xAnswer = PHP_to_XMLRPC(data.return_data); + xAnswer = PHP_to_XMLRPC(data.return_data TSRMLS_CC); } /* should we return data as xml? */ @@ -1171,7 +1171,7 @@ server = zend_list_find(Z_LVAL_PP(handle), type); if (type == le_xmlrpc_server) { - XMLRPC_VALUE xDesc = PHP_to_XMLRPC(*desc); + XMLRPC_VALUE xDesc = PHP_to_XMLRPC(*desc TSRMLS_CC); if (xDesc) { int retval = XMLRPC_ServerAddIntrospectionData(server-server_ptr, xDesc); XMLRPC_CleanupValue(xDesc); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
tony2001Tue Oct 4 08:07:25 2005 EDT Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: MFB5.1: fix #32179 (xmlrpc_encode() segfaults with recursive references) http://cvs.php.net/diff.php/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.39r2=1.40ty=u Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.39 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.40 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.39Wed Aug 3 10:08:22 2005 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Tue Oct 4 08:07:24 2005 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.39 2005/08/03 14:08:22 sniper Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.40 2005/10/04 12:07:24 tony2001 Exp $ */ /** * BUGS: * @@ -520,28 +520,40 @@ unsigned long num_index; zval** pIter; char* my_key; + HashTable *ht = NULL; + ht = HASH_OF(val); + if (ht ht-nApplyCount 1) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, XML-RPC doesn't support circular references); + return NULL; + } + convert_to_array(val); - xReturn = XMLRPC_CreateVector(key, determine_vector_type(Z_ARRVAL_P(val))); zend_hash_internal_pointer_reset(Z_ARRVAL_P(val)); - while(1) { + while(zend_hash_get_current_data(Z_ARRVAL_P(val), (void**)pIter) == SUCCESS) { int res = my_zend_hash_get_current_key(Z_ARRVAL_P(val), my_key, num_index); - if(res == HASH_KEY_IS_LONG) { -if(zend_hash_get_current_data(Z_ARRVAL_P(val), (void**)pIter) == SUCCESS) { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++)); -} - } - else if(res == HASH_KEY_NON_EXISTANT) { -break; + + switch (res) { + case HASH_KEY_NON_EXISTANT: + break; + default: + ht = HASH_OF(*pIter); + if (ht) { + ht-nApplyCount++; + } + if (res == HASH_KEY_IS_LONG) { + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(0, *pIter, depth++)); + } + else { + XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++)); + } + if (ht) { + ht-nApplyCount--; + } + break; } - else if(res == HASH_KEY_IS_STRING) { -if(zend_hash_get_current_data(Z_ARRVAL_P(val), (void**)pIter) == SUCCESS) { - XMLRPC_AddValueToVector(xReturn, PHP_to_XMLRPC_worker(my_key, *pIter, depth++)); -} - } - zend_hash_move_forward(Z_ARRVAL_P(val)); } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/xmlrpc xmlrpc-epi-php.c
gschlossnagle Tue Oct 14 20:15:24 2003 EDT Modified files: /php-src/ext/xmlrpc xmlrpc-epi-php.c Log: fix for dereferncing null pointer ([EMAIL PROTECTED]) Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.35 php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.36 --- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.35Sun Aug 31 16:45:51 2003 +++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Tue Oct 14 20:15:23 2003 @@ -51,7 +51,7 @@ +--+ */ -/* $Id: xmlrpc-epi-php.c,v 1.35 2003/08/31 20:45:51 iliaa Exp $ */ +/* $Id: xmlrpc-epi-php.c,v 1.36 2003/10/15 00:15:23 gschlossnagle Exp $ */ /** * BUGS: * @@ -1030,7 +1030,12 @@ WRONG_PARAM_COUNT; } /* user output options */ - set_output_options(out, *output_opts); + if (argc == 3) { + set_output_options(out, NULL); + } + else { + set_output_options(out, *output_opts); + } server = zend_list_find(Z_LVAL_PP(handle), type); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php