@@ -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 );
@@ -2321,7 +2321,7 @@ static void do_soap_call(zend_execute_data *execute_data,
2321
2321
2322
2322
zend_try {
2323
2323
if (sdl != NULL ) {
2324
- fn = get_function (sdl , ZSTR_VAL (function ));
2324
+ fn = get_function (sdl , ZSTR_VAL (function ), ZSTR_LEN ( function ) );
2325
2325
if (fn != NULL ) {
2326
2326
sdlBindingPtr binding = fn -> binding ;
2327
2327
bool one_way = 0 ;
@@ -3024,7 +3024,8 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3024
3024
{
3025
3025
sdlFunctionPtr function ;
3026
3026
3027
- function = get_function (sdl , (char * )func -> name );
3027
+ size_t xml_func_name_length = strlen ((char * )func -> name );
3028
+ function = get_function (sdl , (char * )func -> name , xml_func_name_length );
3028
3029
if (function && function -> binding && function -> binding -> bindingType == BINDING_SOAP ) {
3029
3030
sdlSoapBindingFunctionPtr fnb = (sdlSoapBindingFunctionPtr )function -> bindingAttributes ;
3030
3031
if (fnb -> style == SOAP_DOCUMENT ) {
@@ -3042,7 +3043,7 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
3042
3043
if (function != NULL ) {
3043
3044
ZVAL_STRING (function_name , (char * )function -> functionName );
3044
3045
} else {
3045
- ZVAL_STRING (function_name , (char * )func -> name );
3046
+ ZVAL_STRINGL (function_name , (char * )func -> name , xml_func_name_length );
3046
3047
}
3047
3048
3048
3049
return function ;
@@ -4131,18 +4132,17 @@ static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, ze
4131
4132
}
4132
4133
/* }}} */
4133
4134
4134
- static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name ) /* {{{ */
4135
+ static sdlFunctionPtr get_function (sdlPtr sdl , const char * function_name , size_t function_name_length ) /* {{{ */
4135
4136
{
4136
4137
sdlFunctionPtr tmp ;
4137
4138
4138
- size_t len = strlen (function_name );
4139
- char * str = estrndup (function_name ,len );
4140
- zend_str_tolower (str ,len );
4139
+ char * str = estrndup (function_name , function_name_length );
4140
+ zend_str_tolower (str , function_name_length );
4141
4141
if (sdl != NULL ) {
4142
- if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , len )) != NULL ) {
4142
+ if ((tmp = zend_hash_str_find_ptr (& sdl -> functions , str , function_name_length )) != NULL ) {
4143
4143
efree (str );
4144
4144
return tmp ;
4145
- } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , len )) != NULL ) {
4145
+ } else if (sdl -> requests != NULL && (tmp = zend_hash_str_find_ptr (sdl -> requests , str , function_name_length )) != NULL ) {
4146
4146
efree (str );
4147
4147
return tmp ;
4148
4148
}
0 commit comments