From 885b44b55f2a032248f614aa2d39b43bc8b55d88 Mon Sep 17 00:00:00 2001 From: martinhsv <55407942+martinhsv@users.noreply.github.com> Date: Mon, 7 Dec 2020 13:24:52 -0800 Subject: [PATCH] Fix memory leak in ValidateDTD m_dtd --- CHANGES | 2 ++ src/operators/validate_dtd.cc | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/CHANGES b/CHANGES index 8404e18288..a21c22fd6d 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,8 @@ v3.x.y - YYYY-MMM-DD (to be released) ------------------------------------- + - Fix memory leak in ValidateDTD's m_dtd + [#2469 - @martinhsv] - Using a custom VariableMatch* implementation [#2428 - @zimmerle] - Avoids to cleanup GeoIp on ModSecurity destructor diff --git a/src/operators/validate_dtd.cc b/src/operators/validate_dtd.cc index 226d595ad8..280dcb7e18 100644 --- a/src/operators/validate_dtd.cc +++ b/src/operators/validate_dtd.cc @@ -49,6 +49,10 @@ bool ValidateDTD::evaluate(Transaction *transaction, RuleMessage *ruleMessage) { xmlValidCtxtPtr cvp; + if (m_dtd != NULL) { + xmlFreeDtd(m_dtd); + m_dtd = NULL; + } m_dtd = xmlParseDTD(NULL, (const xmlChar *)m_resource.c_str()); if (m_dtd == NULL) { std::string err = std::string("XML: Failed to load DTD: ") \