From 88bb9f82da477b16c3855fe5545d0f0b303a00b7 Mon Sep 17 00:00:00 2001 From: "cheng.hm" Date: Fri, 13 Aug 2021 19:28:12 -0700 Subject: [PATCH] fix include --- src/parser/seclang-scanner.ll | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index 9686027ba7..c40159b390 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -3,6 +3,7 @@ #include #include #include +#include #include "src/parser/driver.h" #include "src/parser/seclang-parser.hh" @@ -1237,7 +1238,12 @@ EQUALS_MINUS (?i:=\-) {CONFIG_INCLUDE}[ \t]+{CONFIG_VALUE_PATH} { std::string err; - const char *file = strchr(yytext, ' ') + 1; + + char *tmpStr = strdup ( yytext+strlen("include")); + char *fileNameStart = strtok ( tmpStr, " \t"); + const char *file = yytext +strlen("include") + (fileNameStart-tmpStr); + free(tmpStr); + std::string fi = modsecurity::utils::find_resource(file, *driver.loc.back()->end.filename, &err); if (fi.empty() == true) { BEGIN(INITIAL); @@ -1264,9 +1270,14 @@ EQUALS_MINUS (?i:=\-) {CONFIG_INCLUDE}[ \t]+["]{CONFIG_VALUE_PATH}["] { std::string err; - const char *file = strchr(yytext, ' ') + 1; - char *f = strdup(file + 1); - f[strlen(f)-1] = '\0'; + + char *tmpStr = strdup ( yytext+strlen("include")); + char *fileNameStart = strtok ( tmpStr, " \t"); + const char *file = yytext +strlen("include") + (fileNameStart-tmpStr); + free(tmpStr); + + char *f = strdup(file); + std::string fi = modsecurity::utils::find_resource(f, *driver.loc.back()->end.filename, &err); if (fi.empty() == true) { BEGIN(INITIAL);