Fix issue related to Lua script load

This commit is contained in:
Felipe Zimmerle 2017-12-13 16:20:18 -03:00
parent c98e665475
commit eaa4770c5d
No known key found for this signature in database
GPG Key ID: E6DFB08CE8B11277
3 changed files with 8 additions and 6 deletions

View File

@ -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;
}

View File

@ -1881,18 +1881,18 @@ namespace yy {
case 75:
#line 1117 "seclang-parser.yy" // lalr1.cc:859
{
std::string err;
std::vector<actions::Action *> *a = new std::vector<actions::Action *>();
for (auto &i : *yystack_[0].value.as< std::unique_ptr<std::vector<std::unique_ptr<actions::Action> > > > ().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;

View File

@ -1115,18 +1115,18 @@ expression:
}
| DIRECTIVE_SECRULESCRIPT actions
{
std::string err;
std::vector<actions::Action *> *a = new std::vector<actions::Action *>();
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;