diff --git a/headers/modsecurity/anchored_variable.h b/headers/modsecurity/anchored_variable.h index 3d777128..b3cc101b 100644 --- a/headers/modsecurity/anchored_variable.h +++ b/headers/modsecurity/anchored_variable.h @@ -47,23 +47,11 @@ class AnchoredVariable { AnchoredVariable(const AnchoredVariable &a) = delete; AnchoredVariable &operator= (const AnchoredVariable &a) = delete; - /* - : m_transaction(a.m_transaction), - m_offset(a.m_offset), - m_name(a.m_name), - m_value(a.m_value), - m_var(a.m_var) { } - */ - - ~AnchoredVariable(); + ~AnchoredVariable() = default; void unset(); void set(const std::string &a, size_t offset); void set(const std::string &a, size_t offset, size_t offsetLen); - void append(const std::string &a, size_t offset, - bool spaceSeparator = false); - void append(const std::string &a, size_t offset, - bool spaceSeparator, size_t size); void evaluate(std::vector *l); std::string * evaluate(); @@ -75,7 +63,7 @@ class AnchoredVariable { std::string m_value; private: - VariableValue *m_var; + VariableValue m_var; }; } // namespace modsecurity diff --git a/src/anchored_variable.cc b/src/anchored_variable.cc index 3ead9dbe..51860d1f 100644 --- a/src/anchored_variable.cc +++ b/src/anchored_variable.cc @@ -31,19 +31,9 @@ AnchoredVariable::AnchoredVariable(Transaction *t, const std::string &name) : m_transaction(t), m_offset(0), - m_name(""), + m_name(name), m_value(""), - m_var(NULL) { - m_name.append(name); - m_var = new VariableValue(&m_name); -} - - -AnchoredVariable::~AnchoredVariable() { - if (m_var) { - delete (m_var); - m_var = NULL; - } + m_var(&name) { } @@ -56,38 +46,14 @@ void AnchoredVariable::set(const std::string &a, size_t offset, size_t offsetLen) { m_offset = offset; m_value.assign(a.c_str(), a.size()); - m_var->addOrigin(offsetLen, offset); + m_var.addOrigin(offsetLen, offset); } void AnchoredVariable::set(const std::string &a, size_t offset) { m_offset = offset; m_value.assign(a.c_str(), a.size()); - m_var->addOrigin(m_value.size(), offset); -} - - -void AnchoredVariable::append(const std::string &a, size_t offset, - bool spaceSeparator) { - if (spaceSeparator && !m_value.empty()) { - m_value.append(" " + a); - } else { - m_value.append(a); - } - m_offset = offset; - m_var->addOrigin(a.size(), offset); -} - - -void AnchoredVariable::append(const std::string &a, size_t offset, - bool spaceSeparator, size_t size) { - if (spaceSeparator && !m_value.empty()) { - m_value.append(" " + a); - } else { - m_value.append(a); - } - m_offset = offset; - m_var->addOrigin({size, offset}); + m_var.addOrigin(m_value.size(), offset); } @@ -96,9 +62,8 @@ void AnchoredVariable::evaluate(std::vector *l) { return; } - m_var->setValue(m_value); - VariableValue *m_var2 = new VariableValue(m_var); - l->push_back(m_var2); + m_var.setValue(m_value); + l->push_back(new VariableValue(&m_var)); } @@ -111,9 +76,7 @@ std::unique_ptr AnchoredVariable::resolveFirst() { if (m_value.empty()) { return nullptr; } - std::unique_ptr a(new std::string()); - a->append(m_value); - return a; + return std::make_unique(m_value); }