From 3ea64d3377f4da2277c5a9136a2b1cd9390c9d64 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Sun, 9 Oct 2005 11:31:51 +0000 Subject: [PATCH] Fixed fault message formatting --- ext/soap/soap.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 74cb18050dd..b33c53826fe 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1892,7 +1892,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const Z_TYPE_PP(tmp) != IS_BOOL || Z_LVAL_PP(tmp) != 0)) { zval *fault, *exception; char* code = SOAP_GLOBAL(error_code); - char buffer[1024]; + char *buffer; int buffer_len; zval outbuf, outbuflen; va_list argcopy; @@ -1902,20 +1902,17 @@ static void soap_error_handler(int error_num, const char *error_filename, const INIT_ZVAL(outbuflen); #ifdef va_copy va_copy(argcopy, args); - buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, argcopy); + buffer_len = zend_vspprintf(&buffer, 0, format, argcopy); va_end(argcopy); #else - buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, args); + buffer_len = zend_vspprintf(&buffer, 0, format, args); #endif - buffer[sizeof(buffer)-1]=0; - if (buffer_len > sizeof(buffer) - 1 || buffer_len < 0) { - buffer_len = sizeof(buffer) - 1; - } if (code == NULL) { code = "Client"; } fault = add_soap_fault(SOAP_GLOBAL(error_object), code, buffer, NULL, NULL TSRMLS_CC); + efree(buffer); MAKE_STD_ZVAL(exception); *exception = *fault; zval_copy_ctor(exception); @@ -1951,7 +1948,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const error_num == E_PARSE) { char* code = SOAP_GLOBAL(error_code); - char buffer[1024]; + char *buffer; int buffer_len; zval *outbuf = NULL; zval outbuflen; @@ -1960,15 +1957,11 @@ static void soap_error_handler(int error_num, const char *error_filename, const #ifdef va_copy va_copy(argcopy, args); - buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, argcopy); + buffer_len = zend_vspprintf(&buffer, 0, format, argcopy); va_end(argcopy); #else - buffer_len = vsnprintf(buffer, sizeof(buffer)-1, format, args); + buffer_len = zend_vspprintf(&buffer, 0, format, args); #endif - buffer[sizeof(buffer)-1]=0; - if (buffer_len > sizeof(buffer) - 1 || buffer_len < 0) { - buffer_len = sizeof(buffer) - 1; - } if (code == NULL) { code = "Server"; @@ -1982,6 +1975,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const INIT_ZVAL(fault_obj); set_soap_fault(&fault_obj, NULL, code, buffer, NULL, outbuf, NULL TSRMLS_CC); + efree(buffer); fault = 1; }