summaryrefslogtreecommitdiffstats
path: root/bug64938.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bug64938.patch')
-rw-r--r--bug64938.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/bug64938.patch b/bug64938.patch
new file mode 100644
index 0000000..8986b58
--- /dev/null
+++ b/bug64938.patch
@@ -0,0 +1,42 @@
+Backported for 5.4 by Remi Collet
+
+
+From de31324c221c1791b26350ba106cc26bad23ace9 Mon Sep 17 00:00:00 2001
+From: Martin Jansen <martin@divbyzero.net>
+Date: Thu, 22 Jan 2015 20:58:15 +0100
+Subject: [PATCH] Fix bug #64938: libxml_disable_entity_loader setting is
+ shared between threads
+
+The availability of entity loading is stored in a module global which
+previously was only initialized in the GINIT constructor. This had the
+effect that disabling the entity loader in one request caused
+subsequent requests hitting the same Apache child process to also have
+the loader disabled.
+
+With this change the loader is explicitely enabled in the request init
+phase.
+---
+ NEWS | 4 ++++
+ ext/libxml/libxml.c | 6 ++++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
+index 4b7a36a..5f0da89 100644
+--- a/ext/libxml/libxml.c
++++ b/ext/libxml/libxml.c
+@@ -851,6 +851,12 @@ static PHP_RINIT_FUNCTION(libxml)
+ xmlSetGenericErrorFunc(NULL, php_libxml_error_handler);
+ xmlParserInputBufferCreateFilenameDefault(php_libxml_input_buffer_create_filename);
+ xmlOutputBufferCreateFilenameDefault(php_libxml_output_buffer_create_filename);
++
++ /* Enable the entity loader by default. This ensure that
++ * other threads/requests that might have disable the loader
++ * do not affect the current request.
++ */
++ LIBXML(entity_loader_disabled) = 0;
+ }
+ return SUCCESS;
+ }
+--
+2.1.4
+