diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c index d6cb18df9369f..68565e72dfa2e 100644 --- a/ext/soap/php_sdl.c +++ b/ext/soap/php_sdl.c @@ -77,9 +77,9 @@ static sdlTypePtr get_element(sdlPtr sdl, xmlNodePtr node, const xmlChar *type) parse_namespace(type, &cptype, &ns); nsptr = xmlSearchNs(node->doc, node, BAD_CAST(ns)); if (nsptr != NULL) { - int ns_len = xmlStrlen(nsptr->href); - int type_len = strlen(cptype); - int len = ns_len + type_len + 1; + size_t ns_len = xmlStrlen(nsptr->href); + size_t type_len = strlen(cptype); + size_t len = ns_len + type_len + 1; char *nscat = emalloc(len + 1); memcpy(nscat, nsptr->href, ns_len); @@ -109,9 +109,9 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type) { encodePtr enc = NULL; char *nscat; - int ns_len = ns ? strlen(ns) : 0; - int type_len = strlen(type); - int len = ns_len + type_len + 1; + size_t ns_len = ns ? strlen(ns) : 0; + size_t type_len = strlen(type); + size_t len = ns_len + type_len + 1; nscat = emalloc(len + 1); if (ns) { @@ -129,8 +129,8 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type) (ns_len == sizeof(SOAP_1_2_ENC_NAMESPACE)-1 && memcmp(ns, SOAP_1_2_ENC_NAMESPACE, sizeof(SOAP_1_2_ENC_NAMESPACE)-1) == 0))) { char *enc_nscat; - int enc_ns_len; - int enc_len; + size_t enc_ns_len; + size_t enc_len; enc_ns_len = sizeof(XSD_NAMESPACE)-1; enc_len = enc_ns_len + type_len + 1; @@ -702,7 +702,7 @@ static HashTable* wsdl_message(sdlCtx *ctx, xmlChar* message_name) static sdlPtr load_wsdl(zval *this_ptr, char *struri) { sdlCtx ctx; - int i,n; + size_t i,n; memset(&ctx,0,sizeof(ctx)); ctx.sdl = emalloc(sizeof(sdl)); @@ -999,7 +999,7 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri) } else { */ { - int len = strlen(function->functionName); + size_t len = strlen(function->functionName); function->responseName = emalloc(len + sizeof("Response")); memcpy(function->responseName, function->functionName, len); memcpy(function->responseName+len, "Response", sizeof("Response")); @@ -1103,7 +1103,7 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri) { char *tmp = estrdup(function->functionName); - int len = strlen(tmp); + size_t len = strlen(tmp); zend_str_tolower(tmp, len); if (zend_hash_str_add_ptr(&ctx.sdl->functions, tmp, len, function) == NULL) { @@ -1174,14 +1174,14 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri) smart_str_appendc(buf,(char)((val >> 16) & 0xff)); \ smart_str_appendc(buf,(char)((val >> 24) & 0xff)); #define WSDL_CACHE_PUT_1(val,buf) smart_str_appendc(buf,val); -#define WSDL_CACHE_PUT_N(val,n,buf) smart_str_appendl(buf,(char*)val,n); +#define WSDL_CACHE_PUT_N(val,n,buf) smart_str_appendl(buf,val,n); #define WSDL_NO_STRING_MARKER 0x7fffffff static char* sdl_deserialize_string(char **in) { char *s; - int len; + size_t len; WSDL_CACHE_GET_INT(len, in); if (len == WSDL_NO_STRING_MARKER) { @@ -1196,7 +1196,7 @@ static char* sdl_deserialize_string(char **in) static void sdl_deserialize_key(HashTable* ht, void* data, char **in) { - int len; + size_t len; WSDL_CACHE_GET_INT(len, in); if (len == WSDL_NO_STRING_MARKER) { @@ -1209,7 +1209,7 @@ static void sdl_deserialize_key(HashTable* ht, void* data, char **in) static void sdl_deserialize_attribute(sdlAttributePtr attr, encodePtr *encoders, char **in) { - int i; + size_t i; attr->name = sdl_deserialize_string(in); attr->namens = sdl_deserialize_string(in); @@ -1264,7 +1264,7 @@ static sdlRestrictionCharPtr sdl_deserialize_resriction_char(char **in) static sdlContentModelPtr sdl_deserialize_model(sdlTypePtr *types, sdlTypePtr *elements, char **in) { - int i; + size_t i; sdlContentModelPtr model = emalloc(sizeof(sdlContentModel)); WSDL_CACHE_GET_1(model->kind, sdlContentKind, in); @@ -1302,7 +1302,7 @@ static sdlContentModelPtr sdl_deserialize_model(sdlTypePtr *types, sdlTypePtr *e static void sdl_deserialize_type(sdlTypePtr type, sdlTypePtr *types, encodePtr *encoders, char **in) { - int i; + size_t i; sdlTypePtr *elements = NULL; WSDL_CACHE_GET_1(type->kind, sdlTypeKind, in); @@ -1390,7 +1390,7 @@ static void sdl_deserialize_type(sdlTypePtr type, sdlTypePtr *types, encodePtr * static void sdl_deserialize_encoder(encodePtr enc, sdlTypePtr *types, char **in) { - int i; + size_t i; WSDL_CACHE_GET_INT(enc->details.type, in); enc->details.type_str = sdl_deserialize_string(in); @@ -1404,16 +1404,16 @@ static void sdl_deserialize_encoder(encodePtr enc, sdlTypePtr *types, char **in) enc->to_zval = sdl_guess_convert_zval; if (enc->details.sdl_type == NULL) { - int ns_len = strlen(enc->details.ns); - int type_len = strlen(enc->details.type_str); + size_t ns_len = strlen(enc->details.ns); + size_t type_len = strlen(enc->details.type_str); if (((ns_len == sizeof(SOAP_1_1_ENC_NAMESPACE)-1 && memcmp(enc->details.ns, SOAP_1_1_ENC_NAMESPACE, sizeof(SOAP_1_1_ENC_NAMESPACE)-1) == 0) || (ns_len == sizeof(SOAP_1_2_ENC_NAMESPACE)-1 && memcmp(enc->details.ns, SOAP_1_2_ENC_NAMESPACE, sizeof(SOAP_1_2_ENC_NAMESPACE)-1) == 0))) { char *enc_nscat; - int enc_ns_len; - int enc_len; + size_t enc_ns_len; + size_t enc_len; encodePtr real_enc; enc_ns_len = sizeof(XSD_NAMESPACE)-1; @@ -1436,7 +1436,7 @@ static void sdl_deserialize_encoder(encodePtr enc, sdlTypePtr *types, char **in) static void sdl_deserialize_soap_body(sdlSoapBindingFunctionBodyPtr body, encodePtr *encoders, sdlTypePtr *types, char **in) { - int i, j, n; + size_t i, n; WSDL_CACHE_GET_1(body->use, sdlEncodingUse, in); if (body->use == SOAP_ENCODED) { @@ -1466,10 +1466,12 @@ static void sdl_deserialize_soap_body(sdlSoapBindingFunctionBodyPtr body, encode WSDL_CACHE_GET_INT(n, in); tmp->element = types[n]; --i; + + size_t j; WSDL_CACHE_GET_INT(j, in); if (j > 0) { tmp->headerfaults = emalloc(sizeof(HashTable)); - zend_hash_init(tmp->headerfaults, i, NULL, delete_header, 0); + zend_hash_init(tmp->headerfaults, j, NULL, delete_header, 0); while (j > 0) { sdlSoapBindingFunctionHeaderPtr tmp2 = emalloc(sizeof(sdlSoapBindingFunctionHeader)); memset(tmp2, 0, sizeof(sdlSoapBindingFunctionHeader)); @@ -1482,6 +1484,7 @@ static void sdl_deserialize_soap_body(sdlSoapBindingFunctionBodyPtr body, encode } tmp2->name = sdl_deserialize_string(in); tmp2->ns = sdl_deserialize_string(in); + WSDL_CACHE_GET_INT(n, in); tmp2->encode = encoders[n]; WSDL_CACHE_GET_INT(n, in); @@ -1495,7 +1498,7 @@ static void sdl_deserialize_soap_body(sdlSoapBindingFunctionBodyPtr body, encode static HashTable* sdl_deserialize_parameters(encodePtr *encoders, sdlTypePtr *types, char **in) { - int i, n; + size_t i, n; HashTable *ht; WSDL_CACHE_GET_INT(i, in); @@ -1771,7 +1774,7 @@ static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, size_t uri_len static void sdl_serialize_string(const char *str, smart_str *out) { if (str) { - int i = strlen(str); + size_t i = strlen(str); WSDL_CACHE_PUT_INT(i, out); if (i > 0) { WSDL_CACHE_PUT_N(str, i, out); @@ -1782,7 +1785,7 @@ static void sdl_serialize_string(const char *str, smart_str *out) } // TODO: refactor it -static void sdl_serialize_key(zend_string *key, smart_str *out) +static void sdl_serialize_key(const zend_string *key, smart_str *out) { if (key) { WSDL_CACHE_PUT_INT(ZSTR_LEN(key), out); @@ -1792,10 +1795,10 @@ static void sdl_serialize_key(zend_string *key, smart_str *out) } } -static void sdl_serialize_encoder_ref(encodePtr enc, HashTable *tmp_encoders, smart_str *out) { +static void sdl_serialize_encoder_ref(const encodePtr enc, const HashTable *tmp_encoders, smart_str *out) { if (enc) { zval *encoder_num; - if ((encoder_num = zend_hash_str_find(tmp_encoders, (char*)&enc, sizeof(enc))) != 0) { + if ((encoder_num = zend_hash_str_find(tmp_encoders, (const char*)&enc, sizeof(enc))) != 0) { WSDL_CACHE_PUT_INT(Z_LVAL_P(encoder_num), out); } else { WSDL_CACHE_PUT_INT(0, out); @@ -1805,10 +1808,10 @@ static void sdl_serialize_encoder_ref(encodePtr enc, HashTable *tmp_encoders, sm } } -static void sdl_serialize_type_ref(sdlTypePtr type, HashTable *tmp_types, smart_str *out) { +static void sdl_serialize_type_ref(const sdlTypePtr type, const HashTable *tmp_types, smart_str *out) { if (type) { zval *type_num; - if ((type_num = zend_hash_str_find(tmp_types, (char*)&type, sizeof(type))) != NULL) { + if ((type_num = zend_hash_str_find(tmp_types, (const char*)&type, sizeof(type))) != NULL) { WSDL_CACHE_PUT_INT(Z_LVAL_P(type_num), out); } else { WSDL_CACHE_PUT_INT(0, out); @@ -1818,9 +1821,9 @@ static void sdl_serialize_type_ref(sdlTypePtr type, HashTable *tmp_types, smart_ } } -static void sdl_serialize_attribute(sdlAttributePtr attr, HashTable *tmp_encoders, smart_str *out) +static void sdl_serialize_attribute(const sdlAttributePtr attr, const HashTable *tmp_encoders, smart_str *out) { - int i; + size_t i; sdl_serialize_string(attr->name, out); sdl_serialize_string(attr->namens, out); @@ -1838,7 +1841,7 @@ static void sdl_serialize_attribute(sdlAttributePtr attr, HashTable *tmp_encoder WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlExtraAttributePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(attr->extraAttributes, key, tmp) { sdl_serialize_key(key, out); @@ -1848,7 +1851,7 @@ static void sdl_serialize_attribute(sdlAttributePtr attr, HashTable *tmp_encoder } } -static void sdl_serialize_model(sdlContentModelPtr model, HashTable *tmp_types, HashTable *tmp_elements, smart_str *out) +static void sdl_serialize_model(const sdlContentModelPtr model, const HashTable *tmp_types, const HashTable *tmp_elements, smart_str *out) { WSDL_CACHE_PUT_1(model->kind, out); WSDL_CACHE_PUT_INT(model->min_occurs, out); @@ -1861,7 +1864,7 @@ static void sdl_serialize_model(sdlContentModelPtr model, HashTable *tmp_types, case XSD_CONTENT_ALL: case XSD_CONTENT_CHOICE: { sdlContentModelPtr tmp; - int i = zend_hash_num_elements(model->u.content); + size_t i = zend_hash_num_elements(model->u.content); WSDL_CACHE_PUT_INT(i, out); ZEND_HASH_FOREACH_PTR(model->u.content, tmp) { @@ -1880,7 +1883,7 @@ static void sdl_serialize_model(sdlContentModelPtr model, HashTable *tmp_types, } } -static void sdl_serialize_resriction_int(sdlRestrictionIntPtr x, smart_str *out) +static void sdl_serialize_resriction_int(const sdlRestrictionIntPtr x, smart_str *out) { if (x) { WSDL_CACHE_PUT_1(1, out); @@ -1891,7 +1894,7 @@ static void sdl_serialize_resriction_int(sdlRestrictionIntPtr x, smart_str *out) } } -static void sdl_serialize_resriction_char(sdlRestrictionCharPtr x, smart_str *out) +static void sdl_serialize_resriction_char(const sdlRestrictionCharPtr x, smart_str *out) { if (x) { WSDL_CACHE_PUT_1(1, out); @@ -1902,9 +1905,9 @@ static void sdl_serialize_resriction_char(sdlRestrictionCharPtr x, smart_str *ou } } -static void sdl_serialize_type(sdlTypePtr type, HashTable *tmp_encoders, HashTable *tmp_types, smart_str *out) +static void sdl_serialize_type(const sdlTypePtr type, const HashTable *tmp_encoders, const HashTable *tmp_types, smart_str *out) { - int i; + size_t i; HashTable *tmp_elements = NULL; WSDL_CACHE_PUT_1(type->kind, out); @@ -1938,7 +1941,7 @@ static void sdl_serialize_type(sdlTypePtr type, HashTable *tmp_encoders, HashTab WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlRestrictionCharPtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(type->restrictions->enumeration, key, tmp) { sdl_serialize_resriction_char(tmp, out); @@ -1956,7 +1959,7 @@ static void sdl_serialize_type(sdlTypePtr type, HashTable *tmp_encoders, HashTab WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlTypePtr tmp; - zend_string *key; + const zend_string *key; zval zv; tmp_elements = emalloc(sizeof(HashTable)); @@ -1979,7 +1982,7 @@ static void sdl_serialize_type(sdlTypePtr type, HashTable *tmp_encoders, HashTab WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlAttributePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_FOREACH_STR_KEY_PTR(type->attributes, key, tmp) { sdl_serialize_key(key, out); @@ -1998,7 +2001,7 @@ static void sdl_serialize_type(sdlTypePtr type, HashTable *tmp_encoders, HashTab } } -static void sdl_serialize_encoder(encodePtr enc, HashTable *tmp_types, smart_str *out) +static void sdl_serialize_encoder(const encodePtr enc, const HashTable *tmp_types, smart_str *out) { WSDL_CACHE_PUT_INT(enc->details.type, out); sdl_serialize_string(enc->details.type_str, out); @@ -2006,9 +2009,9 @@ static void sdl_serialize_encoder(encodePtr enc, HashTable *tmp_types, smart_str sdl_serialize_type_ref(enc->details.sdl_type, tmp_types, out); } -static void sdl_serialize_parameters(HashTable *ht, HashTable *tmp_encoders, HashTable *tmp_types, smart_str *out) +static void sdl_serialize_parameters(const HashTable *ht, const HashTable *tmp_encoders, const HashTable *tmp_types, smart_str *out) { - int i; + size_t i; if (ht) { i = zend_hash_num_elements(ht); @@ -2018,7 +2021,7 @@ static void sdl_serialize_parameters(HashTable *ht, HashTable *tmp_encoders, Has WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlParamPtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_FOREACH_STR_KEY_PTR(ht, key, tmp) { sdl_serialize_key(key, out); @@ -2030,9 +2033,9 @@ static void sdl_serialize_parameters(HashTable *ht, HashTable *tmp_encoders, Has } } -static void sdl_serialize_soap_body(sdlSoapBindingFunctionBodyPtr body, HashTable *tmp_encoders, HashTable *tmp_types, smart_str *out) +static void sdl_serialize_soap_body(const sdlSoapBindingFunctionBodyPtr body, const HashTable *tmp_encoders, const HashTable *tmp_types, smart_str *out) { - int i, j; + size_t i, j; WSDL_CACHE_PUT_1(body->use, out); if (body->use == SOAP_ENCODED) { @@ -2047,7 +2050,7 @@ static void sdl_serialize_soap_body(sdlSoapBindingFunctionBodyPtr body, HashTabl WSDL_CACHE_PUT_INT(i, out); if (i > 0) { sdlSoapBindingFunctionHeaderPtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(body->headers, key, tmp) { sdl_serialize_key(key, out); @@ -2067,10 +2070,10 @@ static void sdl_serialize_soap_body(sdlSoapBindingFunctionBodyPtr body, HashTabl WSDL_CACHE_PUT_INT(j, out); if (j > 0) { sdlSoapBindingFunctionHeaderPtr tmp2; - zend_string *key; + const zend_string *key_inner; - ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(body->headers, key, tmp2) { - sdl_serialize_key(key, out); + ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(body->headers, key_inner, tmp2) { + sdl_serialize_key(key_inner, out); WSDL_CACHE_PUT_1(tmp2->use, out); if (tmp2->use == SOAP_ENCODED) { WSDL_CACHE_PUT_1(tmp2->encodingStyle, out); @@ -2114,7 +2117,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s WSDL_CACHE_PUT_N("wsdl", 4, out); WSDL_CACHE_PUT_1(WSDL_CACHE_VERSION,out); WSDL_CACHE_PUT_1(0,out); - WSDL_CACHE_PUT_N(&t, sizeof(t), out); + WSDL_CACHE_PUT_N((char*)&t, sizeof(t), out); sdl_serialize_string(uri, out); sdl_serialize_string(sdl->source, out); @@ -2199,7 +2202,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (sdl->groups) { sdlTypePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(sdl->groups, key, tmp) { sdl_serialize_key(key, out); @@ -2209,7 +2212,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (sdl->types) { sdlTypePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_FOREACH_STR_KEY_PTR(sdl->types, key, tmp) { sdl_serialize_key(key, out); @@ -2219,7 +2222,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (sdl->elements) { sdlTypePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(sdl->elements, key, tmp) { sdl_serialize_key(key, out); @@ -2229,7 +2232,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (sdl->encoders) { encodePtr tmp; - zend_string *key; + const zend_string *key; ZEND_HASH_FOREACH_STR_KEY_PTR(sdl->encoders, key, tmp) { sdl_serialize_key(key, out); @@ -2248,7 +2251,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s sdlBindingPtr tmp; int binding_num = 1; zval zv; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(sdl->bindings, key, tmp) { sdl_serialize_key(key, out); @@ -2276,7 +2279,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s sdlFunctionPtr tmp; zval *binding_num, zv; int function_num = 1; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&sdl->functions, key, tmp) { sdl_serialize_key(key, out); @@ -2306,12 +2309,12 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (tmp->faults) { sdlFaultPtr fault; - zend_string *key; + const zend_string *key_inner; WSDL_CACHE_PUT_INT(zend_hash_num_elements(tmp->faults), out); - ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(tmp->faults, key, fault) { - sdl_serialize_key(key, out); + ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(tmp->faults, key_inner, fault) { + sdl_serialize_key(key_inner, out); sdl_serialize_string(fault->name, out); sdl_serialize_parameters(fault->details, &tmp_encoders, &tmp_types, out); if (tmp->binding->bindingType == BINDING_SOAP && fault->bindingAttributes != NULL) { @@ -2345,7 +2348,7 @@ static void add_sdl_to_cache(const char *fn, const char *uri, time_t t, sdlPtr s if (i > 0) { sdlFunctionPtr tmp; zval *function_num; - zend_string *key; + const zend_string *key; ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(sdl->requests, key, tmp) { function_num = zend_hash_str_find(&tmp_functions, (char*)&tmp, sizeof(tmp)); @@ -3193,17 +3196,17 @@ sdlPtr get_sdl(zval *this_ptr, char *uri, zend_long cache_wsdl) if ((cache_wsdl & WSDL_CACHE_DISK) && (uri_len < MAXPATHLEN)) { time_t t = time(0); char md5str[33]; - PHP_MD5_CTX context; + PHP_MD5_CTX md5_context; unsigned char digest[16]; - int len = strlen(SOAP_GLOBAL(cache_dir)); + size_t len = strlen(SOAP_GLOBAL(cache_dir)); time_t cached; char *user = php_get_current_user(); - int user_len = user ? strlen(user) + 1 : 0; + size_t user_len = user ? strlen(user) + 1 : 0; md5str[0] = '\0'; - PHP_MD5Init(&context); - PHP_MD5Update(&context, (unsigned char*)uri, uri_len); - PHP_MD5Final(digest, &context); + PHP_MD5Init(&md5_context); + PHP_MD5Update(&md5_context, (unsigned char*)uri, uri_len); + PHP_MD5Final(digest, &md5_context); make_digest(md5str, digest); key = emalloc(len+sizeof("/wsdl-")-1+user_len+2+sizeof(md5str)); memcpy(key,SOAP_GLOBAL(cache_dir),len); diff --git a/ext/soap/php_soap.h b/ext/soap/php_soap.h index 65ba76fcf11f6..639e0cd124924 100644 --- a/ext/soap/php_soap.h +++ b/ext/soap/php_soap.h @@ -158,7 +158,6 @@ ZEND_BEGIN_MODULE_GLOBALS(soap) char* error_code; zval error_object; bool use_soap_error_handler; - char cache; char cache_mode; char cache_enabled; char* cache_dir;