Makes Lua::run const

This commit is contained in:
Felipe Zimmerle 2020-06-08 13:01:45 -03:00
parent 3efc14bc08
commit fc0fef3646
No known key found for this signature in database
GPG Key ID: E6DFB08CE8B11277
3 changed files with 16 additions and 6 deletions

View File

@ -121,7 +121,7 @@ const char *Lua::blob_reader(lua_State *L, void *ud, size_t *size) {
#endif
int Lua::run(Transaction *t, const std::string &str) {
int Lua::run(Transaction *t, const std::string &str) const {
#ifdef WITH_LUA
std::string luaRet;
const char *a = NULL;
@ -138,10 +138,12 @@ int Lua::run(Transaction *t, const std::string &str) {
luaL_setfuncs(L, mscLuaLib, 0);
lua_setglobal(L, "m");
LuaScriptBlob blob(m_blob);
#ifdef WITH_LUA_5_1
int rc = lua_load(L, Lua::blob_reader, &m_blob, m_scriptName.c_str());
int rc = lua_load(L, Lua::blob_reader, &blob, m_scriptName.c_str());
#else
int rc = lua_load(L, Lua::blob_reader, &m_blob, m_scriptName.c_str(),
int rc = lua_load(L, Lua::blob_reader, &blob, m_scriptName.c_str(),
NULL);
#endif
if (rc != LUA_OK) {

View File

@ -43,6 +43,14 @@ class LuaScriptBlob {
}
}
LuaScriptBlob(const LuaScriptBlob &other) :
m_data(NULL),
m_len(other.m_len) {
m_data = (unsigned char *)std::malloc(m_len);
// FIXME: m_data NULL?
std::memcpy(m_data, other.m_data, m_len);
}
void write(const void *data, size_t len) {
unsigned char *d = (unsigned char *)realloc((unsigned char *)m_data, len + m_len);
@ -68,7 +76,7 @@ class Lua {
Lua() { }
bool load(const std::string &script, std::string *err);
int run(Transaction *t, const std::string &str="");
int run(Transaction *t, const std::string &str="") const;
static bool isCompatible(const std::string &script, Lua *l, std::string *error);
#ifdef WITH_LUA

View File

@ -46,8 +46,8 @@ functionStatic:headers/modsecurity/transaction.h:437
duplicateBranch:src/audit_log/audit_log.cc:223
unreadVariable:src/request_body_processor/multipart.cc:435
stlcstrParam:src/audit_log/writer/parallel.cc:145
functionStatic:src/engine/lua.h:70
functionStatic:src/engine/lua.h:71
functionStatic:src/engine/lua.h:78
functionStatic:src/engine/lua.h:79
functionConst:src/utils/geo_lookup.h:49
useInitializationList:src/operators/rbl.h:69
constStatement:test/common/modsecurity_test.cc:82