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: ") \