From 6a5ec1ff7bd5a4a653da417f9a49a50cf5b2429d Mon Sep 17 00:00:00 2001 From: Vladimir Krivopalov 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 --- apache2/msc_xml.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apache2/msc_xml.c b/apache2/msc_xml.c index a31decb5e1..9cc4da65b8 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;