Avoids string copy by working with pointers while resolving variables

This commit is contained in:
Felipe Zimmerle
2016-12-27 15:25:11 -03:00
parent 7834cf857b
commit a7f465cf3a
38 changed files with 179 additions and 94 deletions

View File

@@ -17,11 +17,13 @@
#include <string>
#include <list>
#include <utility>
#include <iostream>
#ifndef SRC_VARIABLES_MODSEC_BUILD_H_
#define SRC_VARIABLES_MODSEC_BUILD_H_
#include "src/variables/variable.h"
#include "modsecurity/modsecurity.h"
namespace modsecurity {
@@ -31,10 +33,21 @@ namespace Variables {
class ModsecBuild : public Variable {
public:
explicit ModsecBuild(std::string _name)
: Variable(_name) { }
: Variable(_name),
m_retName("MODSEC_BUILD") {
std::ostringstream ss;
ss << std::setw(2) << std::setfill('0') << MODSECURITY_MAJOR;
ss << std::setw(2) << std::setfill('0') << MODSECURITY_MINOR;
ss << std::setw(2) << std::setfill('0') << MODSECURITY_PATCHLEVEL;
ss << std::setw(2) << std::setfill('0') << MODSECURITY_TAG_NUM;
m_build = ss.str();
}
void evaluateInternal(Transaction *transaction,
std::vector<const collection::Variable *> *l) override;
std::string m_build;
std::string m_retName;
};