@@ -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 );
@@ -2311,7 +2311,7 @@ static void do_soap_call(zend_execute_data *execute_data,
2311
2311
2312
2312
zend_try {
2313
2313
if (sdl != NULL ) {
2314
- fn = get_function (sdl , ZSTR_VAL (function ));
2314
+ fn = get_function (sdl , ZSTR_VAL (function ), ZSTR_LEN ( function ) );
2315
2315
if (fn != NULL ) {
2316
2316
sdlBindingPtr binding = fn -> binding ;
2317
2317
bool one_way = 0 ;
@@ -3014,7 +3014,8 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3014
3014
{
3015
3015
sdlFunctionPtr function ;
3016
3016
3017
- function = get_function (sdl , (char * )func -> name );
3017
+ size_t xml_func_name_length = strlen ((char * )func -> name );
3018
+ function = get_function (sdl , (char * )func -> name , xml_func_name_length );
3018
3019
if (function && function -> binding && function -> binding -> bindingType == BINDING_SOAP ) {
3019
3020
sdlSoapBindingFunctionPtr fnb = (sdlSoapBindingFunctionPtr )function -> bindingAttributes ;
3020
3021
if (fnb -> style == SOAP_DOCUMENT ) {
@@ -3032,7 +3033,7 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3032
3033
if (function != NULL ) {
3033
3034
ZVAL_STRING (function_name , (char * )function -> functionName );
3034
3035
} else {
3035
- ZVAL_STRING (function_name , (char * )func -> name );
3036
+ ZVAL_STRINGL (function_name , (char * )func -> name , xml_func_name_length );
3036
3037
}
3037
3038
3038
3039
return function ;
@@ -4121,18 +4122,17 @@ static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, ze
4121
4122
}
4122
4123
/* }}} */
4123
4124
4124
- static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name ) /* {{{ */
4125
+ static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name , size_t function_name_length ) /* {{{ */
4125
4126
{
4126
4127
sdlFunctionPtr tmp ;
4127
4128
4128
- size_t len = strlen (function_name );
4129
- char * str = estrndup (function_name ,len );
4130
- zend_str_tolower (str ,len );
4129
+ char * str = estrndup (function_name , function_name_length );
4130
+ zend_str_tolower (str , function_name_length );
4131
4131
if (sdl != NULL ) {
4132
- if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , len )) != NULL ) {
4132
+ if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , function_name_length )) != NULL ) {
4133
4133
efree (str );
4134
4134
return tmp ;
4135
- } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , len )) != NULL ) {
4135
+ } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , function_name_length )) != NULL ) {
4136
4136
efree (str );
4137
4137
return tmp ;
4138
4138
}
0 commit comments