mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-15 23:55:03 +03:00
Fix rule file inclusion path
The inclusion was not taking `*' into consideration, leading the relative configuration inclusion to fail. That was very annoying.
This commit is contained in:
parent
361ec8340f
commit
8b4f1bc46c
@ -396,7 +396,8 @@ VAR_FREE_TEXT_SPACE_COMMA [^, \t\"]+
|
|||||||
|
|
||||||
{CONFIG_INCLUDE}[ ]{CONFIG_VALUE_PATH} {
|
{CONFIG_INCLUDE}[ ]{CONFIG_VALUE_PATH} {
|
||||||
const char *file = strchr(yytext, ' ') + 1;
|
const char *file = strchr(yytext, ' ') + 1;
|
||||||
for (auto& s: modsecurity::utils::expandEnv(file, 0)) {
|
std::string fi = modsecurity::utils::find_resource(file, driver.ref.back());
|
||||||
|
for (auto& s: modsecurity::utils::expandEnv(fi, 0)) {
|
||||||
std::string f = modsecurity::utils::find_resource(s, driver.ref.back());
|
std::string f = modsecurity::utils::find_resource(s, driver.ref.back());
|
||||||
yyin = fopen(f.c_str(), "r" );
|
yyin = fopen(f.c_str(), "r" );
|
||||||
if (!yyin) {
|
if (!yyin) {
|
||||||
@ -414,7 +415,8 @@ VAR_FREE_TEXT_SPACE_COMMA [^, \t\"]+
|
|||||||
const char *file = strchr(yytext, ' ') + 1;
|
const char *file = strchr(yytext, ' ') + 1;
|
||||||
char *f = strdup(file + 1);
|
char *f = strdup(file + 1);
|
||||||
f[strlen(f)-1] = '\0';
|
f[strlen(f)-1] = '\0';
|
||||||
for (auto& s: modsecurity::utils::expandEnv(f, 0)) {
|
std::string fi = modsecurity::utils::find_resource(f, driver.ref.back());
|
||||||
|
for (auto& s: modsecurity::utils::expandEnv(fi, 0)) {
|
||||||
std::string f = modsecurity::utils::find_resource(s, driver.ref.back());
|
std::string f = modsecurity::utils::find_resource(s, driver.ref.back());
|
||||||
yyin = fopen(f.c_str(), "r" );
|
yyin = fopen(f.c_str(), "r" );
|
||||||
if (!yyin) {
|
if (!yyin) {
|
||||||
|
@ -70,6 +70,11 @@ std::string find_resource(const std::string& resource,
|
|||||||
}
|
}
|
||||||
delete iss;
|
delete iss;
|
||||||
|
|
||||||
|
// What about `*' ?
|
||||||
|
if (utils::expandEnv(resource, 0).size() > 1) {
|
||||||
|
return resource;
|
||||||
|
}
|
||||||
|
|
||||||
// Trying the same path of the configuration file.
|
// Trying the same path of the configuration file.
|
||||||
std::string f = get_path(config) + "/" + resource;
|
std::string f = get_path(config) + "/" + resource;
|
||||||
iss = new std::ifstream(f, std::ios::in);
|
iss = new std::ifstream(f, std::ios::in);
|
||||||
@ -80,6 +85,11 @@ std::string find_resource(const std::string& resource,
|
|||||||
}
|
}
|
||||||
delete iss;
|
delete iss;
|
||||||
|
|
||||||
|
// What about `*' ?
|
||||||
|
if (utils::expandEnv(f, 0).size() > 1) {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
return std::string("");
|
return std::string("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user