diff --git a/src/engine/lua.cc b/src/engine/lua.cc index 9a0c49a5..3a16df36 100644 --- a/src/engine/lua.cc +++ b/src/engine/lua.cc @@ -75,7 +75,7 @@ bool Lua::load(std::string script, std::string *err) { const char *luaerr = lua_tostring(L, -1); err->assign("Failed to compile script '" + script + ""); if (luaerr) { - err->append(": " + *luaerr); + err->append(": " + std::string(luaerr)); } err->append("."); lua_close(L); @@ -91,7 +91,7 @@ bool Lua::load(std::string script, std::string *err) { const char *luaerr = lua_tostring(L, -1); err->assign("Failed to compile script '" + script + ""); if (luaerr) { - err->append(": " + *luaerr); + err->append(": " + std::string(luaerr)); } err->append("."); lua_close(L); @@ -366,6 +366,8 @@ int Lua::setvar(lua_State *L) { t->m_collections.storeOrUpdateFirst(collection, variableName, var_value); + + return 0; } diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 4f989819..0d18c68e 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -1881,18 +1881,18 @@ namespace yy { case 75: #line 1117 "seclang-parser.yy" // lalr1.cc:859 { + std::string err; std::vector *a = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { a->push_back(i.release()); } - RuleScript *r = new RuleScript( /* path to script */ yystack_[1].value.as< std::string > (), /* actions */ a, /* file name */ driver.ref.back(), /* line number */ yystack_[2].location.end.line ); - std::string err; + if (r->init(&err) == false) { driver.error(yystack_[2].location, "Failed to load script: " + err); delete r; diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 6d31bd31..0901c8ef 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1115,18 +1115,18 @@ expression: } | DIRECTIVE_SECRULESCRIPT actions { + std::string err; std::vector *a = new std::vector(); for (auto &i : *$2.get()) { a->push_back(i.release()); } - RuleScript *r = new RuleScript( /* path to script */ $1, /* actions */ a, /* file name */ driver.ref.back(), /* line number */ @0.end.line ); - std::string err; + if (r->init(&err) == false) { driver.error(@0, "Failed to load script: " + err); delete r;