@@ -55,7 +55,7 @@ static ZEND_NORETURN void soap_server_fault(char* code, char* string, char *acto
55
55
static void soap_server_fault_ex (sdlFunctionPtr function , zval * fault , soapHeader * hdr );
56
56
57
57
static sdlParamPtr get_param (sdlFunctionPtr function , const char * param_name , zend_ulong index , int );
58
- static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name );
58
+ static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name , size_t function_name_length );
59
59
static sdlFunctionPtr get_doc_function (sdlPtr sdl , xmlNodePtr params );
60
60
61
61
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 );
@@ -2307,7 +2307,7 @@ static void do_soap_call(zend_execute_data *execute_data,
2307
2307
2308
2308
zend_try {
2309
2309
if (sdl != NULL ) {
2310
- fn = get_function (sdl , ZSTR_VAL (function ));
2310
+ fn = get_function (sdl , ZSTR_VAL (function ), ZSTR_LEN ( function ) );
2311
2311
if (fn != NULL ) {
2312
2312
sdlBindingPtr binding = fn -> binding ;
2313
2313
bool one_way = 0 ;
@@ -3010,7 +3010,8 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3010
3010
{
3011
3011
sdlFunctionPtr function ;
3012
3012
3013
- function = get_function (sdl , (char * )func -> name );
3013
+ size_t xml_func_name_length = strlen ((char * )func -> name );
3014
+ function = get_function (sdl , (char * )func -> name , xml_func_name_length );
3014
3015
if (function && function -> binding && function -> binding -> bindingType == BINDING_SOAP ) {
3015
3016
sdlSoapBindingFunctionPtr fnb = (sdlSoapBindingFunctionPtr )function -> bindingAttributes ;
3016
3017
if (fnb -> style == SOAP_DOCUMENT ) {
@@ -3028,7 +3029,7 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3028
3029
if (function != NULL ) {
3029
3030
ZVAL_STRING (function_name , (char * )function -> functionName );
3030
3031
} else {
3031
- ZVAL_STRING (function_name , (char * )func -> name );
3032
+ ZVAL_STRINGL (function_name , (char * )func -> name , xml_func_name_length );
3032
3033
}
3033
3034
3034
3035
return function ;
@@ -4117,18 +4118,17 @@ static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, ze
4117
4118
}
4118
4119
/* }}} */
4119
4120
4120
- static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name ) /* {{{ */
4121
+ static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name , size_t function_name_length ) /* {{{ */
4121
4122
{
4122
4123
sdlFunctionPtr tmp ;
4123
4124
4124
- size_t len = strlen (function_name );
4125
- char * str = estrndup (function_name ,len );
4126
- zend_str_tolower (str ,len );
4125
+ char * str = estrndup (function_name , function_name_length );
4126
+ zend_str_tolower (str , function_name_length );
4127
4127
if (sdl != NULL ) {
4128
- if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , len )) != NULL ) {
4128
+ if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , function_name_length )) != NULL ) {
4129
4129
efree (str );
4130
4130
return tmp ;
4131
- } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , len )) != NULL ) {
4131
+ } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , function_name_length )) != NULL ) {
4132
4132
efree (str );
4133
4133
return tmp ;
4134
4134
}
0 commit comments