37 lines
1.2 KiB
Diff
37 lines
1.2 KiB
Diff
|
|
From 6a5ec1ff7bd5a4a653da417f9a49a50cf5b2429d Mon Sep 17 00:00:00 2001
|
||
|
|
From: Vladimir Krivopalov <vlkrivop@microsoft.com>
|
||
|
|
Date: Mon, 13 Jan 2020 16:36:09 -0800
|
||
|
|
Subject: [PATCH] Properly cleanup XML parser contexts upon completion
|
||
|
|
|
||
|
|
It is currently possible that the XML parsing context is not properly
|
||
|
|
cleaned up if a parsed XML document is malformed.
|
||
|
|
|
||
|
|
This fix makes sure that the context is taken care of.
|
||
|
|
|
||
|
|
Signed-off-by: Vladimir Krivopalov <vlkrivop@microsoft.com>
|
||
|
|
---
|
||
|
|
apache2/msc_xml.c | 7 +++++++
|
||
|
|
1 file changed, 7 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/apache2/msc_xml.c b/apache2/msc_xml.c
|
||
|
|
index a31decb5..9cc4da65 100644
|
||
|
|
--- a/apache2/msc_xml.c
|
||
|
|
+++ b/apache2/msc_xml.c
|
||
|
|
@@ -137,6 +137,13 @@ int xml_complete(modsec_rec *msr, char **error_msg) {
|
||
|
|
* Frees the resources used for XML parsing.
|
||
|
|
*/
|
||
|
|
apr_status_t xml_cleanup(modsec_rec *msr) {
|
||
|
|
+ if (msr->xml->parsing_ctx != NULL) {
|
||
|
|
+ if (msr->xml->parsing_ctx->myDoc) {
|
||
|
|
+ xmlFreeDoc(msr->xml->parsing_ctx->myDoc);
|
||
|
|
+ }
|
||
|
|
+ xmlFreeParserCtxt(msr->xml->parsing_ctx);
|
||
|
|
+ msr->xml->parsing_ctx = NULL;
|
||
|
|
+ }
|
||
|
|
if (msr->xml->doc != NULL) {
|
||
|
|
xmlFreeDoc(msr->xml->doc);
|
||
|
|
msr->xml->doc = NULL;
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|