Fix signedness issues in soap.c

This commit is contained in:
Niels Dossche 2024-05-31 21:18:57 +02:00
parent ca7a0df35e
commit e8c6c6f15d
3 changed files with 26 additions and 24 deletions

View file

@ -174,13 +174,13 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type)
return enc; 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; 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; 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 enc;
} }
return NULL; return NULL;

View file

@ -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_from_prefix(sdlPtr sdl, xmlNodePtr data, const xmlChar *type);
encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *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_type(sdlPtr sdl, sdlBindingType type);
sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns); sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns);

View file

@ -37,7 +37,7 @@ typedef struct _soapHeader {
sdlFunctionPtr function; sdlFunctionPtr function;
zval function_name; zval function_name;
int mustUnderstand; int mustUnderstand;
int num_params; uint32_t num_params;
zval *parameters; zval *parameters;
zval retval; zval retval;
sdlSoapBindingFunctionHeaderPtr hdr; 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 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 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_function(sdlPtr sdl, const char *function_name);
static sdlFunctionPtr get_doc_function(sdlPtr sdl, xmlNodePtr params); 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_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 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, 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);
static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, const char *paramName, 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); static void delete_service(soapServicePtr service);
@ -1244,7 +1244,8 @@ PHP_METHOD(SoapServer, handle)
xmlDocPtr doc_request = NULL, doc_return = NULL; xmlDocPtr doc_request = NULL, doc_return = NULL;
zval function_name, *params, *soap_obj, retval; zval function_name, *params, *soap_obj, retval;
char cont_len[30]; 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; xmlChar *buf;
HashTable *function_table; HashTable *function_table;
soapHeader *soap_headers = NULL; soapHeader *soap_headers = NULL;
@ -1653,7 +1654,7 @@ fail:
zval_ptr_dtor(&retval); zval_ptr_dtor(&retval);
while (soap_headers != NULL) { while (soap_headers != NULL) {
soapHeader *h = soap_headers; soapHeader *h = soap_headers;
int i; uint32_t i;
soap_headers = soap_headers->next; soap_headers = soap_headers->next;
if (h->parameters) { if (h->parameters) {
@ -2238,7 +2239,7 @@ static void do_soap_call(zend_execute_data *execute_data,
zval* this_ptr, zval* this_ptr,
char* function, char* function,
size_t function_len, size_t function_len,
int arg_count, uint32_t arg_count,
zval* real_args, zval* real_args,
zval* return_value, zval* return_value,
char* location, char* location,
@ -2480,7 +2481,7 @@ void soap_client_call_impl(INTERNAL_FUNCTION_PARAMETERS, bool is_soap_call)
zval *args; zval *args;
zval *real_args = NULL; zval *real_args = NULL;
zval *param; zval *param;
int arg_count; uint32_t arg_count;
zval *tmp; zval *tmp;
bool free_soap_headers = 0; bool free_soap_headers = 0;
zval *this_ptr; 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; zval *tmp_parameters = NULL;
if (function != NULL) { if (function != NULL) {
@ -3047,7 +3048,7 @@ static xmlNodePtr get_envelope(xmlNodePtr trav, int *version, char **envelope_ns
return NULL; 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; char* envelope_ns = NULL;
xmlNodePtr trav,env,head,body,func; xmlNodePtr trav,env,head,body,func;
@ -3329,7 +3330,7 @@ static int serialize_response_call2(xmlNodePtr body, sdlFunctionPtr function, co
{ {
xmlNodePtr method = NULL, param; xmlNodePtr method = NULL, param;
sdlParamPtr parameter = NULL; sdlParamPtr parameter = NULL;
int param_count; uint32_t param_count;
int style, use; int style, use;
xmlNsPtr ns = NULL; 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; xmlDoc *doc;
xmlNodePtr envelope = NULL, body, method = NULL, head = NULL; xmlNodePtr envelope = NULL, body, method = NULL, head = NULL;
xmlNsPtr ns = NULL; xmlNsPtr ns = NULL;
zval *zstyle, *zuse; zval *zstyle, *zuse;
int i, style, use; uint32_t i;
int style, use;
HashTable *hdrs = NULL; HashTable *hdrs = NULL;
encode_reset_ns(); encode_reset_ns();
@ -3902,7 +3904,7 @@ static xmlDocPtr serialize_function_call(zval *this_ptr, sdlFunctionPtr function
} }
if (function && function->requestParameters) { 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) { if (n > arg_count) {
for (i = arg_count; i < n; i++) { 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; const char *paramName;
xmlNodePtr xmlParam; 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; sdlParamPtr tmp;
HashTable *ht; HashTable *ht;
@ -4107,7 +4109,7 @@ static sdlFunctionPtr get_function(sdlPtr sdl, const char *function_name) /* {{{
{ {
sdlFunctionPtr tmp; sdlFunctionPtr tmp;
int len = strlen(function_name); size_t len = strlen(function_name);
char *str = estrndup(function_name,len); char *str = estrndup(function_name,len);
zend_str_tolower(str,len); zend_str_tolower(str,len);
if (sdl != NULL) { if (sdl != NULL) {
@ -4339,7 +4341,7 @@ static void type_to_string(sdlTypePtr type, smart_str *buf, int level) /* {{{ */
attr->extraAttributes && attr->extraAttributes &&
(ext = zend_hash_str_find_ptr(attr->extraAttributes, WSDL_NAMESPACE":arrayType", sizeof(WSDL_NAMESPACE":arrayType")-1)) != NULL) { (ext = zend_hash_str_find_ptr(attr->extraAttributes, WSDL_NAMESPACE":arrayType", sizeof(WSDL_NAMESPACE":arrayType")-1)) != NULL) {
char *end = strchr(ext->val, '['); char *end = strchr(ext->val, '[');
int len; size_t len;
if (end == NULL) { if (end == NULL) {
len = strlen(ext->val); len = strlen(ext->val);
} else { } else {