]> granicus.if.org Git - php/commitdiff
Fixed bug #70979 crash with bad soap request
authorAnatol Belski <ab@php.net>
Thu, 14 Jan 2016 16:42:28 +0000 (17:42 +0100)
committerAnatol Belski <ab@php.net>
Thu, 14 Jan 2016 16:42:28 +0000 (17:42 +0100)
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.

ext/soap/soap.c

index 7c84bc9adbae76b84a71faae97d579baf5791299..f0e26bf19d0472c52990632685efa38a520fb1aa 100644 (file)
@@ -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;
        }