dmitry Thu May 27 03:58:23 2004 EDT Modified files: /php-src/ext/soap php_http.c soap.c Log: BUGFIX: Prevent crash on error in send_http_soap_request() http://cvs.php.net/diff.php/php-src/ext/soap/php_http.c?r1=1.51&r2=1.52&ty=u Index: php-src/ext/soap/php_http.c diff -u php-src/ext/soap/php_http.c:1.51 php-src/ext/soap/php_http.c:1.52 --- php-src/ext/soap/php_http.c:1.51 Thu May 20 12:55:02 2004 +++ php-src/ext/soap/php_http.c Thu May 27 03:58:22 2004 @@ -17,7 +17,7 @@ | Dmitry Stogov <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: php_http.c,v 1.51 2004/05/20 16:55:02 dmitry Exp $ */ +/* $Id: php_http.c,v 1.52 2004/05/27 07:58:22 dmitry Exp $ */ #include "php_soap.h" #include "ext/standard/base64.h" @@ -217,7 +217,6 @@ if (phpurl != NULL) { php_url_free(phpurl); } - xmlFree(buf); add_soap_fault(this_ptr, "HTTP", "Unable to parse URL", NULL, NULL TSRMLS_CC); return FALSE; } @@ -226,14 +225,12 @@ if (phpurl->scheme != NULL && strcmp(phpurl->scheme, "https") == 0) { use_ssl = 1; } else if (phpurl->scheme == NULL || strcmp(phpurl->scheme, "http") != 0) { - xmlFree(buf); php_url_free(phpurl); add_soap_fault(this_ptr, "HTTP", "Unknown protocol. Only http and https are allowed.", NULL, NULL TSRMLS_CC); return FALSE; } #ifdef ZEND_ENGINE_2 if (use_ssl && php_stream_locate_url_wrapper("https://", NULL, STREAM_LOCATE_WRAPPERS_ONLY TSRMLS_CC) == NULL) { - xmlFree(buf); php_url_free(phpurl); add_soap_fault(this_ptr, "HTTP", "SSL support not available in this build", NULL, NULL TSRMLS_CC); return FALSE; @@ -241,7 +238,6 @@ #else #ifndef HAVE_OPENSSL_EXT if (use_ssl) { - xmlFree(buf); php_url_free(phpurl); add_soap_fault(this_ptr, "HTTP", "SSL support not available in this build", NULL, NULL TSRMLS_CC); return FALSE; @@ -291,7 +287,6 @@ add_property_resource(this_ptr, "httpsocket", php_stream_get_resource_id(stream)); add_property_long(this_ptr, "_use_proxy", use_proxy); } else { - xmlFree(buf); php_url_free(phpurl); add_soap_fault(this_ptr, "HTTP", "Could not connect to host", NULL, NULL TSRMLS_CC); return FALSE; @@ -382,7 +377,6 @@ request_size = Z_STRLEN(retval); } else { if (request != buf) {efree(request);} - xmlFree(buf); smart_str_free(&soap_headers); php_stream_close(stream); zend_hash_del(Z_OBJPROP_P(this_ptr), "httpurl", sizeof("httpurl")); @@ -471,7 +465,6 @@ err = php_stream_write(stream, soap_headers.c, soap_headers.len); if (err != soap_headers.len) { if (request != buf) {efree(request);} - xmlFree(buf); smart_str_free(&soap_headers); php_stream_close(stream); zend_hash_del(Z_OBJPROP_P(this_ptr), "httpurl", sizeof("httpurl")); http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.104&r2=1.105&ty=u Index: php-src/ext/soap/soap.c diff -u php-src/ext/soap/soap.c:1.104 php-src/ext/soap/soap.c:1.105 --- php-src/ext/soap/soap.c:1.104 Thu May 20 12:55:02 2004 +++ php-src/ext/soap/soap.c Thu May 27 03:58:22 2004 @@ -17,7 +17,7 @@ | Dmitry Stogov <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: soap.c,v 1.104 2004/05/20 16:55:02 dmitry Exp $ */ +/* $Id: soap.c,v 1.105 2004/05/27 07:58:22 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1924,6 +1924,7 @@ zval func; zval *params[4]; zval **trace; + zval **fault; INIT_ZVAL(*response); @@ -1959,6 +1960,9 @@ add_property_stringl(this_ptr, "__last_response", Z_STRVAL_P(response), Z_STRLEN_P(response), 1); } xmlFree(buf); + if (ret && zend_hash_find(Z_OBJPROP_P(this_ptr), "__soap_fault", sizeof("__soap_fault"), (void **) &fault) == SUCCESS) { + return FALSE; + } return ret; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php