From: Anton Artamonov Date: Sat, 4 Nov 2017 12:51:33 +0000 (+0700) Subject: Fixed bug #70469 X-Git-Tag: php-7.3.0alpha1~968 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1dfcd1af9aab9b760d971ceeac18e9e83c85f80f;p=php Fixed bug #70469 Don't generate an E_ERROR if we've already thrown an exception. This interacts badly with error_get_last() checks. --- diff --git a/NEWS b/NEWS index a86a3bfc00..28eed08333 100644 --- a/NEWS +++ b/NEWS @@ -129,6 +129,10 @@ PHP NEWS - SQLite3: . Updated bundled libsqlite to 3.21.0. (cmb) +- Soap: + . Fixed bug #70469 (SoapClient generates E_ERROR even if exceptions=1 is + used). (Anton Artamonov) + - Standard: . Fixed unzserialize(), to disable creation of unsupported data structures through manually crafted strings. (Dmitry) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 102c784ce9..afaddf717d 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2147,8 +2147,6 @@ static void soap_error_handler(int error_num, const char *error_filename, const char buffer[1024]; size_t buffer_len; va_list argcopy; - zend_object **old_objects; - int old = PG(display_errors); va_copy(argcopy, args); buffer_len = vslprintf(buffer, sizeof(buffer)-1, format, argcopy); @@ -2165,24 +2163,6 @@ static void soap_error_handler(int error_num, const char *error_filename, const add_soap_fault_ex(&fault, &SOAP_GLOBAL(error_object), code, buffer, NULL, NULL); Z_ADDREF(fault); zend_throw_exception_object(&fault); - - old_objects = EG(objects_store).object_buckets; - EG(objects_store).object_buckets = NULL; - PG(display_errors) = 0; - SG(sapi_headers).http_status_line = NULL; - zend_try { - call_old_error_handler(error_num, error_filename, error_lineno, format, args); - } zend_catch { - CG(in_compilation) = _old_in_compilation; - EG(current_execute_data) = _old_current_execute_data; - if (SG(sapi_headers).http_status_line) { - efree(SG(sapi_headers).http_status_line); - } - SG(sapi_headers).http_status_line = _old_http_status_line; - SG(sapi_headers).http_response_code = _old_http_response_code; - } zend_end_try(); - EG(objects_store).object_buckets = old_objects; - PG(display_errors) = old; zend_bailout(); } else if (!use_exceptions || !SOAP_GLOBAL(error_code) || diff --git a/ext/soap/tests/bugs/bug70469.phpt b/ext/soap/tests/bugs/bug70469.phpt new file mode 100644 index 0000000000..ca3ab80950 --- /dev/null +++ b/ext/soap/tests/bugs/bug70469.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #70469 (SoapClient should not generate E_ERROR if exceptions enabled) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +catched +ok \ No newline at end of file