From 6f92c8914a822f440b2280802b408a1c2e4c66c2 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Tue, 24 Apr 2018 14:15:37 -0300 Subject: [PATCH] Disables skip counter if debug log is disabled --- CHANGES | 2 ++ headers/modsecurity/rules.h | 14 ++++++++++---- src/rules.cc | 6 ++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index b691bf76..fe5bffa2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ v3.0.3 - YYYY-MMM-DD (to be released) ------------------------------------- + - Disables skip counter if debug log is disabled + [@zimmerle] - Cosmetics: Represents amount of skipped rules without decimal [Issue #1737 - @p0pr0ck5] - Add missing escapeSeqDecode, urlEncode and trimLeft/Right tfns to parser diff --git a/headers/modsecurity/rules.h b/headers/modsecurity/rules.h index c574b136..2b34f12b 100644 --- a/headers/modsecurity/rules.h +++ b/headers/modsecurity/rules.h @@ -47,14 +47,18 @@ class Rules : public RulesProperties { Rules() : RulesProperties(new DebugLog()), unicode_codepage(0), - m_referenceCount(0), - m_secmarker_skipped(0) { } +#ifndef NO_LOGS + m_secmarker_skipped(0), +#endif + m_referenceCount(0) { } explicit Rules(DebugLog *customLog) : RulesProperties(customLog), unicode_codepage(0), - m_referenceCount(0), - m_secmarker_skipped(0) { } +#ifndef NO_LOGS + m_secmarker_skipped(0), +#endif + m_referenceCount(0) { } ~Rules() { } @@ -80,7 +84,9 @@ class Rules : public RulesProperties { private: int m_referenceCount; +#ifndef NO_LOGS uint8_t m_secmarker_skipped; +#endif }; #endif diff --git a/src/rules.cc b/src/rules.cc index 80374878..d97d4bef 100644 --- a/src/rules.cc +++ b/src/rules.cc @@ -180,15 +180,21 @@ int Rules::evaluate(int phase, Transaction *transaction) { for (int i = 0; i < rules.size(); i++) { Rule *rule = rules[i]; if (transaction->m_marker.empty() == false) { +#ifndef NO_LOGS debug(9, "Skipped rule id '" + std::to_string(rule->m_ruleId) \ + "' due to a SecMarker: " + transaction->m_marker); m_secmarker_skipped++; debug(9, "Rule: " + rule->m_marker); +#endif if (rule->m_secMarker && rule->m_marker == transaction->m_marker) { +#ifndef NO_LOGS debug(4, "Out of a SecMarker after skip " \ + std::to_string(m_secmarker_skipped) + " rules."); +#endif transaction->m_marker.clear(); +#ifndef NO_LOGS m_secmarker_skipped = 0; +#endif } } else if (transaction->m_skip_next > 0) { transaction->m_skip_next--;