com php-src: Fixed bug #70469: NEWS ext/soap/soap.c ext/soap/tests/bugs/bug70469.phpt
| From: | Nikita Popov | Date: | Wed, 22 Nov 2017 22:15:46 +0000 |
| Subject: | com php-src: Fixed bug #70469: NEWS ext/soap/soap.c ext/soap/tests/bugs/bug70469.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-100352@lists.php.net to get a copy of this message | ||
Commit: 1dfcd1af9aab9b760d971ceeac18e9e83c85f80f
Author: Anton Artamonov <a.artmnv@gmail.com> Sat, 4 Nov 2017 19:51:33 +0700
Committer: Nikita Popov <nikita.ppv@gmail.com> Wed, 22 Nov 2017 23:15:46 +0100
Parents: 201930106d2a7ae6c0673d10ca61418c9e23cdf7
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1dfcd1af9aab9b760d971ceeac18e9e83c85f80f
Log:
Fixed bug #70469
Don't generate an E_ERROR if we've already thrown an exception.
This interacts badly with error_get_last() checks.
Bugs:
https://bugs.php.net/70469
Changed paths:
M NEWS
M ext/soap/soap.c
A ext/soap/tests/bugs/bug70469.phpt
Diff:
diff --git a/NEWS b/NEWS
index a86a3bf..28eed08 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 102c784..afaddf7 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 0000000..ca3ab80
--- /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--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+try {
+ $x = new SoapClient('http://i_dont_exist.com/some.wsdl');
+} catch (SoapFault $e) {
+ echo "catched\n";
+}
+
+$error = error_get_last();
+if ($error === null) {
+ echo "ok\n";
+}
+?>
+--EXPECT--
+catched
+ok
\ No newline at end of file