From e8c6c6f15d4744989cf568627884a1c955d9c63f Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Fri, 31 May 2024 21:18:57 +0200 Subject: [PATCH] Fix signedness issues in soap.c --- ext/soap/php_sdl.c | 6 +++--- ext/soap/php_sdl.h | 2 +- ext/soap/soap.c | 42 ++++++++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index 4215d07c853..b6546cb910e 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -174,13 +174,13 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type) return enc; } -encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, int len) +encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, size_t len) { encodePtr enc; - if ((enc = zend_hash_str_find_ptr(&SOAP_GLOBAL(defEnc), (char*)nscat, len)) != NULL) { + if ((enc = zend_hash_str_find_ptr(&SOAP_GLOBAL(defEnc), nscat, len)) != NULL) { return enc; - } else if (sdl && sdl->encoders && (enc = zend_hash_str_find_ptr(sdl->encoders, (char*)nscat, len)) != NULL) { + } else if (sdl && sdl->encoders && (enc = zend_hash_str_find_ptr(sdl->encoders, nscat, len)) != NULL) { return enc; } return NULL; diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h index 3a1bcb51a8a..1acee331084 100644 --- a/ext/soap/php_sdl.h +++ b/ext/soap/php_sdl.h @@ -255,7 +255,7 @@ sdlPtr get_sdl(zval *this_ptr, char *uri, zend_long cache_wsdl); encodePtr get_encoder_from_prefix(sdlPtr sdl, xmlNodePtr data, const xmlChar *type); encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type); -encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, int len); +encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, size_t len); sdlBindingPtr get_binding_from_type(sdlPtr sdl, sdlBindingType type); sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns); diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 1e05a4cee47..3f7f8606875 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -37,7 +37,7 @@ typedef struct _soapHeader { sdlFunctionPtr function; zval function_name; int mustUnderstand; - int num_params; + uint32_t num_params; zval *parameters; zval retval; sdlSoapBindingFunctionHeaderPtr hdr; @@ -54,14 +54,14 @@ static void add_soap_fault_ex(zval *fault, zval *obj, char *fault_code, char *fa static ZEND_NORETURN void soap_server_fault(char* code, char* string, char *actor, zval* details, char *name); static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeader* hdr); -static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, int index, int); +static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, zend_ulong index, int); static sdlFunctionPtr get_function(sdlPtr sdl, const char *function_name); static sdlFunctionPtr get_doc_function(sdlPtr sdl, xmlNodePtr params); -static sdlFunctionPtr deserialize_function_call(sdlPtr sdl, xmlDocPtr request, const char* actor, zval *function_name, int *num_params, zval **parameters, int *version, soapHeader **headers); +static sdlFunctionPtr deserialize_function_call(sdlPtr sdl, xmlDocPtr request, const char* actor, zval *function_name, uint32_t *num_params, zval **parameters, int *version, soapHeader **headers); static xmlDocPtr serialize_response_call(sdlFunctionPtr function, const char *function_name, const char *uri,zval *ret, soapHeader *headers, int version); -static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function, const char *function_name, const char *uri, zval *arguments, int arg_count, int version, HashTable *soap_headers); -static xmlNodePtr serialize_parameter(sdlParamPtr param,zval *param_val, int index,const char *name, int style, xmlNodePtr parent); +static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function, const char *function_name, const char *uri, zval *arguments, uint32_t arg_count, int version, HashTable *soap_headers); +static xmlNodePtr serialize_parameter(sdlParamPtr param,zval *param_val, uint32_t index,const char *name, int style, xmlNodePtr parent); static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, const char *paramName, int style, xmlNodePtr parent); static void delete_service(soapServicePtr service); @@ -1244,7 +1244,8 @@ PHP_METHOD(SoapServer, handle) xmlDocPtr doc_request = NULL, doc_return = NULL; zval function_name, *params, *soap_obj, retval; char cont_len[30]; - int num_params = 0, size, i, call_status = 0; + uint32_t num_params = 0; + int size, i, call_status = 0; xmlChar *buf; HashTable *function_table; soapHeader *soap_headers = NULL; @@ -1653,7 +1654,7 @@ fail: zval_ptr_dtor(&retval); while (soap_headers != NULL) { soapHeader *h = soap_headers; - int i; + uint32_t i; soap_headers = soap_headers->next; if (h->parameters) { @@ -2238,7 +2239,7 @@ static void do_soap_call(zend_execute_data *execute_data, zval* this_ptr, char* function, size_t function_len, - int arg_count, + uint32_t arg_count, zval* real_args, zval* return_value, char* location, @@ -2480,7 +2481,7 @@ void soap_client_call_impl(INTERNAL_FUNCTION_PARAMETERS, bool is_soap_call) zval *args; zval *real_args = NULL; zval *param; - int arg_count; + uint32_t arg_count; zval *tmp; bool free_soap_headers = 0; zval *this_ptr; @@ -2904,9 +2905,9 @@ static void set_soap_fault(zval *obj, const char *fault_code_ns, const char *fau } /* }}} */ -static void deserialize_parameters(xmlNodePtr params, sdlFunctionPtr function, int *num_params, zval **parameters) /* {{{ */ +static void deserialize_parameters(xmlNodePtr params, sdlFunctionPtr function, uint32_t *num_params, zval **parameters) /* {{{ */ { - int cur_param = 0,num_of_params = 0; + uint32_t cur_param = 0,num_of_params = 0; zval *tmp_parameters = NULL; if (function != NULL) { @@ -3047,7 +3048,7 @@ static xmlNodePtr get_envelope(xmlNodePtr trav, int *version, char **envelope_ns return NULL; } -static sdlFunctionPtr deserialize_function_call(sdlPtr sdl, xmlDocPtr request, const char* actor, zval *function_name, int *num_params, zval **parameters, int *version, soapHeader **headers) /* {{{ */ +static sdlFunctionPtr deserialize_function_call(sdlPtr sdl, xmlDocPtr request, const char* actor, zval *function_name, uint32_t *num_params, zval **parameters, int *version, soapHeader **headers) /* {{{ */ { char* envelope_ns = NULL; xmlNodePtr trav,env,head,body,func; @@ -3329,7 +3330,7 @@ static int serialize_response_call2(xmlNodePtr body, sdlFunctionPtr function, co { xmlNodePtr method = NULL, param; sdlParamPtr parameter = NULL; - int param_count; + uint32_t param_count; int style, use; xmlNsPtr ns = NULL; @@ -3800,13 +3801,14 @@ static xmlDocPtr serialize_response_call(sdlFunctionPtr function, const char *fu } /* }}} */ -static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function, const char *function_name, const char *uri, zval *arguments, int arg_count, int version, HashTable *soap_headers) /* {{{ */ +static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function, const char *function_name, const char *uri, zval *arguments, uint32_t arg_count, int version, HashTable *soap_headers) /* {{{ */ { xmlDoc *doc; xmlNodePtr envelope = NULL, body, method = NULL, head = NULL; xmlNsPtr ns = NULL; zval *zstyle, *zuse; - int i, style, use; + uint32_t i; + int style, use; HashTable *hdrs = NULL; encode_reset_ns(); @@ -3902,7 +3904,7 @@ static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function } if (function && function->requestParameters) { - int n = zend_hash_num_elements(function->requestParameters); + uint32_t n = zend_hash_num_elements(function->requestParameters); if (n > arg_count) { for (i = arg_count; i < n; i++) { @@ -4000,7 +4002,7 @@ static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function } /* }}} */ -static xmlNodePtr serialize_parameter(sdlParamPtr param, zval *param_val, int index, const char *name, int style, xmlNodePtr parent) /* {{{ */ +static xmlNodePtr serialize_parameter(sdlParamPtr param, zval *param_val, uint32_t index, const char *name, int style, xmlNodePtr parent) /* {{{ */ { const char *paramName; xmlNodePtr xmlParam; @@ -4065,7 +4067,7 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, const char *param } /* }}} */ -static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, int index, int response) /* {{{ */ +static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, zend_ulong index, int response) /* {{{ */ { sdlParamPtr tmp; HashTable *ht; @@ -4107,7 +4109,7 @@ static sdlFunctionPtr get_function(sdlPtr sdl, const char *function_name) /* {{{ { sdlFunctionPtr tmp; - int len = strlen(function_name); + size_t len = strlen(function_name); char *str = estrndup(function_name,len); zend_str_tolower(str,len); if (sdl != NULL) { @@ -4339,7 +4341,7 @@ static void type_to_string(sdlTypePtr type, smart_str *buf, int level) /* {{{ */ attr->extraAttributes && (ext = zend_hash_str_find_ptr(attr->extraAttributes, WSDL_NAMESPACE":arrayType", sizeof(WSDL_NAMESPACE":arrayType")-1)) != NULL) { char *end = strchr(ext->val, '['); - int len; + size_t len; if (end == NULL) { len = strlen(ext->val); } else {