From: Anatol Belski Date: Thu, 14 Jan 2016 16:42:28 +0000 (+0100) Subject: Fixed bug #70979 crash with bad soap request X-Git-Tag: php-7.0.3RC1~20^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4308c868f94df1f2b99e80038ba5ea1076d919a7;p=php Fixed bug #70979 crash with bad soap request The error handler is overloaded with the SOAP one. However the SOAP handler eventually wants to access some of its globals. This won't work as long as the SOAP globals aren't initialized. The use case is when an error is thrown before RINIT went through. As the call order is arbitrary, the safest is to wait when all the modules called their RINIT. --- diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 7c84bc9adb..f0e26bf19d 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2135,7 +2135,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const _old_http_response_code = SG(sapi_headers).http_response_code; _old_http_status_line = SG(sapi_headers).http_status_line; - if (!SOAP_GLOBAL(use_soap_error_handler) || !EG(objects_store).object_buckets) { + if (!PG(modules_activated) || !SOAP_GLOBAL(use_soap_error_handler) || !EG(objects_store).object_buckets) { call_old_error_handler(error_num, error_filename, error_lineno, format, args); return; }