mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-30 19:47:47 +03:00
Removes a regex optimization added at #1536
This commit is contained in:
@@ -33,17 +33,14 @@ bool Rx::evaluate(Transaction *transaction, Rule *rule,
|
|||||||
const std::string& input, std::shared_ptr<RuleMessage> ruleMessage) {
|
const std::string& input, std::shared_ptr<RuleMessage> ruleMessage) {
|
||||||
SMatch match;
|
SMatch match;
|
||||||
std::list<SMatch> matches;
|
std::list<SMatch> matches;
|
||||||
Regex * re = m_re;
|
Regex *re;
|
||||||
|
|
||||||
if (m_param.empty()) {
|
if (m_param.empty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string eparam = MacroExpansion::expand(m_param, transaction);
|
std::string eparam = MacroExpansion::expand(m_param, transaction);
|
||||||
|
|
||||||
if (eparam != m_param) {
|
|
||||||
re = new Regex(eparam);
|
re = new Regex(eparam);
|
||||||
}
|
|
||||||
|
|
||||||
matches = re->searchAll(input);
|
matches = re->searchAll(input);
|
||||||
if (rule && rule->getActionsByName("capture").size() > 0 && transaction) {
|
if (rule && rule->getActionsByName("capture").size() > 0 && transaction) {
|
||||||
@@ -65,9 +62,7 @@ bool Rx::evaluate(Transaction *transaction, Rule *rule,
|
|||||||
logOffset(ruleMessage, i.m_offset, i.m_length);
|
logOffset(ruleMessage, i.m_offset, i.m_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (re != m_re) {
|
|
||||||
delete re;
|
delete re;
|
||||||
}
|
|
||||||
|
|
||||||
if (matches.size() > 0) {
|
if (matches.size() > 0) {
|
||||||
return true;
|
return true;
|
||||||
|
@@ -37,19 +37,15 @@ class Rx : public Operator {
|
|||||||
/** @ingroup ModSecurity_Operator */
|
/** @ingroup ModSecurity_Operator */
|
||||||
Rx(std::string op, std::string param, bool negation)
|
Rx(std::string op, std::string param, bool negation)
|
||||||
: Operator(op, param, negation) {
|
: Operator(op, param, negation) {
|
||||||
m_re = new Regex(param);
|
|
||||||
}
|
}
|
||||||
Rx(std::string name, std::string param)
|
Rx(std::string name, std::string param)
|
||||||
: Operator(name, param) {
|
: Operator(name, param) {
|
||||||
m_re = new Regex(param);
|
|
||||||
}
|
}
|
||||||
explicit Rx(std::string param)
|
explicit Rx(std::string param)
|
||||||
: Operator("Rx", param) {
|
: Operator("Rx", param) {
|
||||||
m_re = new Regex(param);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~Rx() {
|
~Rx() {
|
||||||
delete m_re;
|
|
||||||
}
|
}
|
||||||
bool evaluate(Transaction *transaction, Rule *rule,
|
bool evaluate(Transaction *transaction, Rule *rule,
|
||||||
const std::string &input) override {
|
const std::string &input) override {
|
||||||
@@ -62,9 +58,6 @@ class Rx : public Operator {
|
|||||||
bool evaluate(Transaction *transaction, Rule *rule,
|
bool evaluate(Transaction *transaction, Rule *rule,
|
||||||
const std::string& input,
|
const std::string& input,
|
||||||
std::shared_ptr<RuleMessage> ruleMessage) override;
|
std::shared_ptr<RuleMessage> ruleMessage) override;
|
||||||
|
|
||||||
private:
|
|
||||||
Regex *m_re;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user