parser: Fix filename

This commit is contained in:
Felipe Zimmerle
2019-04-23 13:09:22 -03:00
parent 0669c2e64d
commit 61c11251b6
7 changed files with 75 additions and 73 deletions

View File

@@ -315,7 +315,7 @@ using namespace modsecurity::operators;
%initial-action
{
// Initialize the initial location.
@$.begin.filename = @$.end.filename = &driver.file;
@$.begin.filename = @$.end.filename = new std::string(driver.file);
};
%define parse.trace
%define parse.error verbose
@@ -866,7 +866,7 @@ op:
{
$$ = std::move($1);
std::string error;
if ($$->init(driver.ref.back(), &error) == false) {
if ($$->init(*@1.end.filename, &error) == false) {
driver.error(@0, error);
YYERROR;
}
@@ -876,7 +876,7 @@ op:
$$ = std::move($2);
$$->m_negation = true;
std::string error;
if ($$->init(driver.ref.back(), &error) == false) {
if ($$->init(*@1.end.filename, &error) == false) {
driver.error(@0, error);
YYERROR;
}
@@ -885,7 +885,7 @@ op:
{
OPERATOR_CONTAINER($$, new operators::Rx(std::move($1)));
std::string error;
if ($$->init(driver.ref.back(), &error) == false) {
if ($$->init(*@1.end.filename, &error) == false) {
driver.error(@0, error);
YYERROR;
}
@@ -895,7 +895,7 @@ op:
OPERATOR_CONTAINER($$, new operators::Rx(std::move($2)));
$$->m_negation = true;
std::string error;
if ($$->init(driver.ref.back(), &error) == false) {
if ($$->init(*@1.end.filename, &error) == false) {
driver.error(@0, error);
YYERROR;
}
@@ -1073,7 +1073,7 @@ expression:
/* op */ op,
/* variables */ v,
/* actions */ a,
/* file name */ driver.ref.back(),
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
@@ -1093,7 +1093,7 @@ expression:
/* op */ $3.release(),
/* variables */ v,
/* actions */ NULL,
/* file name */ driver.ref.back(),
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
if (driver.addSecRule(rule) == false) {
@@ -1111,7 +1111,7 @@ expression:
/* op */ NULL,
/* variables */ NULL,
/* actions */ a,
/* file name */ driver.ref.back(),
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
driver.addSecAction(rule);
@@ -1126,7 +1126,7 @@ expression:
RuleScript *r = new RuleScript(
/* path to script */ $1,
/* actions */ a,
/* file name */ driver.ref.back(),
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
@@ -1525,7 +1525,7 @@ expression:
#if defined(WITH_GEOIP) or defined(WITH_MAXMIND)
std::string err;
std::string file = modsecurity::utils::find_resource($1,
driver.ref.back(), &err);
*@1.end.filename, &err);
if (file.empty()) {
std::stringstream ss;
ss << "Failed to load locate the GeoDB file from: " << $1 << " ";
@@ -1707,7 +1707,7 @@ expression:
param.pop_back();
}
file = modsecurity::utils::find_resource(f, driver.ref.back(), &err);
file = modsecurity::utils::find_resource(f, *@1.end.filename, &err);
if (file.empty()) {
std::stringstream ss;
ss << "Failed to locate the unicode map file from: " << f << " ";