@@ -55,7 +55,7 @@ static ZEND_NORETURN void soap_server_fault(char* code, char* string, char *acto
5555static void soap_server_fault_ex (sdlFunctionPtr function , zval * fault , soapHeader * hdr );
5656
5757static 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 );
5959static sdlFunctionPtr get_doc_function (sdlPtr sdl , xmlNodePtr params );
6060
6161static 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,
23212321
23222322 zend_try {
23232323 if (sdl != NULL ) {
2324- fn = get_function (sdl , ZSTR_VAL (function ));
2324+ fn = get_function (sdl , ZSTR_VAL (function ), ZSTR_LEN ( function ) );
23252325 if (fn != NULL ) {
23262326 sdlBindingPtr binding = fn -> binding ;
23272327 bool one_way = 0 ;
@@ -3024,7 +3024,8 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
30243024{
30253025 sdlFunctionPtr function ;
30263026
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 );
30283029 if (function && function -> binding && function -> binding -> bindingType == BINDING_SOAP ) {
30293030 sdlSoapBindingFunctionPtr fnb = (sdlSoapBindingFunctionPtr )function -> bindingAttributes ;
30303031 if (fnb -> style == SOAP_DOCUMENT ) {
@@ -3042,7 +3043,7 @@ static sdlFunctionPtr find_function(sdlPtr sdl, xmlNodePtr func, zval* function_
30423043 if (function != NULL ) {
30433044 ZVAL_STRING (function_name , (char * )function -> functionName );
30443045 } else {
3045- ZVAL_STRING (function_name , (char * )func -> name );
3046+ ZVAL_STRINGL (function_name , (char * )func -> name , xml_func_name_length );
30463047 }
30473048
30483049 return function ;
@@ -4131,18 +4132,17 @@ static sdlParamPtr get_param(sdlFunctionPtr function, const char *param_name, ze
41314132}
41324133/* }}} */
41334134
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 ) /* {{{ */
41354136{
41364137 sdlFunctionPtr tmp ;
41374138
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 );
41414141 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 ) {
41434143 efree (str );
41444144 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 ) {
41464146 efree (str );
41474147 return tmp ;
41484148 }
0 commit comments