diff --git a/headers/modsecurity/anchored_variable.h b/headers/modsecurity/anchored_variable.h index a0a0df50..a2f1d51b 100644 --- a/headers/modsecurity/anchored_variable.h +++ b/headers/modsecurity/anchored_variable.h @@ -79,7 +79,7 @@ class AnchoredVariable { std::string m_value; private: - VariableValue m_var; + std::shared_ptr m_var; }; } // namespace modsecurity diff --git a/headers/modsecurity/variable_value.h b/headers/modsecurity/variable_value.h index 8754403b..5251c156 100644 --- a/headers/modsecurity/variable_value.h +++ b/headers/modsecurity/variable_value.h @@ -60,20 +60,7 @@ class VariableValue { m_value(*value) { } - VariableValue(const VariableValue &o) : - m_collection(o.m_collection), - m_key(o.m_key), - m_keyWithCollection(o.m_keyWithCollection), - m_value(o.m_value) - { - for (auto &i : o.m_orign) { - VariableOrigin *origin(new VariableOrigin()); - origin->m_offset = i.m_offset; - origin->m_length = i.m_length; - m_orign.push_back(*origin); - } - } - + VariableValue(const VariableValue &o) = delete; const std::string& getName() const noexcept { return m_keyWithCollection; diff --git a/src/anchored_variable.cc b/src/anchored_variable.cc index 54f8c18a..e9f43c2d 100644 --- a/src/anchored_variable.cc +++ b/src/anchored_variable.cc @@ -34,7 +34,7 @@ AnchoredVariable::AnchoredVariable(Transaction *t, m_offset(0), m_name(name), m_value(""), - m_var(&name) { + m_var(std::make_shared(&name)) { } void AnchoredVariable::unset() { @@ -50,7 +50,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset, VariableOrigin origin; origin.m_offset = offset; origin.m_length = offsetLen; - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -60,7 +60,7 @@ void AnchoredVariable::set(const std::string &a, size_t offset) { VariableOrigin origin; origin.m_offset = offset; origin.m_length = m_value.size(); - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -71,7 +71,7 @@ void AnchoredVariable::set(const char *a, size_t offset) { m_value.assign(a, strlen(a)); origin.m_offset = offset; origin.m_length = m_value.size(); - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -83,7 +83,7 @@ void AnchoredVariable::set(const bpstd::string_view &a, size_t offset) { origin.m_offset = offset; origin.m_length = m_value.size(); - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -98,7 +98,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset, VariableOrigin origin; origin.m_offset = offset; origin.m_length = a.size(); - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -113,7 +113,7 @@ void AnchoredVariable::append(const std::string &a, size_t offset, VariableOrigin origin; origin.m_offset = offset; origin.m_length = size; - m_var.addOrigin(std::move(origin)); + m_var->addOrigin(std::move(origin)); } @@ -122,8 +122,8 @@ void AnchoredVariable::evaluate(VariableValues *l) { return; } - m_var.setValue(m_value); - l->push_back(std::make_shared(m_var)); + m_var->setValue(m_value); + l->push_back(m_var); }