51 lines
1.9 KiB
Diff
51 lines
1.9 KiB
Diff
|
From 100bb87f5517484d75191ff4cdbbc1fdf579791d Mon Sep 17 00:00:00 2001
|
||
|
From: jjacky <i.am.jack.mail@gmail.com>
|
||
|
Date: Fri, 11 May 2012 22:38:05 +0200
|
||
|
Subject: [PATCH] CGI/FPM process could crash when using libxml, fixes #61557
|
||
|
|
||
|
Since d8bddb9665637d96f20dc4a2ae5668ba376f3b17 some SAPI would only setup/reset
|
||
|
callbacks to libxml once, instead of for each request processed. However, this
|
||
|
also included a callback for structured errors, which should remain per request
|
||
|
(as it can be defined through PHP's libxml_use_internal_errors).
|
||
|
|
||
|
As a result, after the internal handler was set in a request, processing another
|
||
|
request would result in the handler being triggered while the memory associated
|
||
|
with it (LIBXML(error_list)) had been free-d/reset, leading to the process
|
||
|
segfaulting.
|
||
|
|
||
|
This reset the handler for structured errors after each request.
|
||
|
|
||
|
(see #61325 also possibly the same bug)
|
||
|
---
|
||
|
ext/libxml/libxml.c | 3 +--
|
||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
|
||
|
index e42d845..92c1099 100644
|
||
|
--- a/ext/libxml/libxml.c
|
||
|
+++ b/ext/libxml/libxml.c
|
||
|
@@ -851,7 +851,6 @@ static PHP_MSHUTDOWN_FUNCTION(libxml)
|
||
|
{
|
||
|
if (!_php_libxml_per_request_initialization) {
|
||
|
xmlSetGenericErrorFunc(NULL, NULL);
|
||
|
- xmlSetStructuredErrorFunc(NULL, NULL);
|
||
|
|
||
|
xmlParserInputBufferCreateFilenameDefault(NULL);
|
||
|
xmlOutputBufferCreateFilenameDefault(NULL);
|
||
|
@@ -867,11 +866,11 @@ static int php_libxml_post_deactivate()
|
||
|
/* reset libxml generic error handling */
|
||
|
if (_php_libxml_per_request_initialization) {
|
||
|
xmlSetGenericErrorFunc(NULL, NULL);
|
||
|
- xmlSetStructuredErrorFunc(NULL, NULL);
|
||
|
|
||
|
xmlParserInputBufferCreateFilenameDefault(NULL);
|
||
|
xmlOutputBufferCreateFilenameDefault(NULL);
|
||
|
}
|
||
|
+ xmlSetStructuredErrorFunc(NULL, NULL);
|
||
|
|
||
|
if (LIBXML(stream_context)) {
|
||
|
/* the steam_context resource will be released by resource list destructor */
|
||
|
--
|
||
|
1.7.10.1
|
||
|
|