Skip to content

Commit d08a7b0

Browse files
committed
Fix memory leak owasp-modsecurity#3470
1 parent 90faa95 commit d08a7b0

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

headers/modsecurity/transaction.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,12 @@ class TransactionAnchoredVariables {
205205
m_variableFilesTmpNames(t, "FILES_TMPNAMES"),
206206
m_variableMultipartPartHeaders(t, "MULTIPART_PART_HEADERS"),
207207
m_variableOffset(0),
208-
m_variableArgsNames("ARGS_NAMES", &m_variableArgs),
209-
m_variableArgsGetNames("ARGS_GET_NAMES", &m_variableArgsGet),
210-
m_variableArgsPostNames("ARGS_POST_NAMES", &m_variableArgsPost)
208+
m_pVariableArgsNames(std::make_unique<AnchoredSetVariableTranslationProxy>("ARGS_NAMES", &m_variableArgs)),
209+
m_variableArgsNames(*m_pVariableArgsNames),
210+
m_pVariableArgsGetNames(std::make_unique<AnchoredSetVariableTranslationProxy>("ARGS_GET_NAMES", &m_variableArgsGet)),
211+
m_variableArgsGetNames(*m_pVariableArgsGetNames),
212+
m_pVariableArgsPostNames(std::make_unique<AnchoredSetVariableTranslationProxy>("ARGS_POST_NAMES", &m_variableArgsPost)),
213+
m_variableArgsPostNames(*m_pVariableArgsPostNames)
211214
{ }
212215

213216
AnchoredSetVariable m_variableRequestHeadersNames;
@@ -291,9 +294,12 @@ class TransactionAnchoredVariables {
291294

292295
int m_variableOffset;
293296

294-
AnchoredSetVariableTranslationProxy m_variableArgsNames;
295-
AnchoredSetVariableTranslationProxy m_variableArgsGetNames;
296-
AnchoredSetVariableTranslationProxy m_variableArgsPostNames;
297+
std::unique_ptr<AnchoredSetVariableTranslationProxy> m_pVariableArgsNames;
298+
AnchoredSetVariableTranslationProxy &m_variableArgsNames;
299+
std::unique_ptr<AnchoredSetVariableTranslationProxy> m_pVariableArgsGetNames;
300+
AnchoredSetVariableTranslationProxy &m_variableArgsGetNames;
301+
std::unique_ptr<AnchoredSetVariableTranslationProxy> m_pVariableArgsPostNames;
302+
AnchoredSetVariableTranslationProxy &m_variableArgsPostNames;
297303
};
298304

299305
class TransactionSecMarkerManagement {

src/transaction.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,12 @@ Transaction::~Transaction() {
170170

171171
m_rulesMessages.clear();
172172

173+
m_ruleRemoveById.clear();
174+
m_ruleRemoveByIdRange.clear();
175+
m_ruleRemoveByTag.clear();
176+
m_ruleRemoveTargetById.clear();
177+
m_ruleRemoveTargetByTag.clear();
178+
173179
intervention::free(&m_it);
174180
intervention::clean(&m_it);
175181

0 commit comments

Comments
 (0)