diff --git a/examples/multithread_c/Makefile.am b/examples/multithread_c/Makefile.am index b89c840554..e47e3b21ea 100644 --- a/examples/multithread_c/Makefile.am +++ b/examples/multithread_c/Makefile.am @@ -8,6 +8,7 @@ multi_SOURCES = \ multi_LDADD = \ -L$(top_builddir)/src/.libs/ \ -lmodsecurity \ + -lpthread \ $(YAJL_LDFLAGS) \ $(GEOIP_LDFLAGS) \ $(GLOBAL_LDADD) diff --git a/src/Makefile.am b/src/Makefile.am index befb241255..868ac9429b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -253,7 +253,7 @@ libmodsecurity_la_LIBADD = \ $(GEOIP_LDFLAGS) $(GEOIP_LDADD) \ @LEXLIB@ \ $(PCRE_LDADD) \ - $(YAJL_LDADD) \ + $(YAJL_LDFLAGS) $(YAJL_LDADD) \ $(LIBXML2_LDADD) \ ../others/libinjection.la \ libmbedtls.la diff --git a/src/actions/ctl_audit_log_parts.cc b/src/actions/ctl_audit_log_parts.cc index b9127dfe2d..136bb05e61 100644 --- a/src/actions/ctl_audit_log_parts.cc +++ b/src/actions/ctl_audit_log_parts.cc @@ -31,6 +31,8 @@ bool CtlAuditLogParts::init(std::string *error) { } else { mPartsAction = 1; } + + return true; } bool CtlAuditLogParts::evaluate(Rule *rule, Transaction *transaction) { diff --git a/src/actions/transformations/cmd_line.cc b/src/actions/transformations/cmd_line.cc index 7d567fcfd6..96b79876be 100644 --- a/src/actions/transformations/cmd_line.cc +++ b/src/actions/transformations/cmd_line.cc @@ -72,7 +72,7 @@ std::string CmdLine::evaluate(std::string value, /* copy normal characters */ default : char b = std::tolower(a); - ret.append(&b); + ret.append(&b, 1); space = 0; break; } diff --git a/src/parser/driver.cc b/src/parser/driver.cc index 34f946a9da..4a6bb27321 100644 --- a/src/parser/driver.cc +++ b/src/parser/driver.cc @@ -46,6 +46,7 @@ int Driver::addSecMarker(std::string marker) { rule->phase = i; rules[i].push_back(rule); } + return 0; } diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index ea977c06fa..4627d9013b 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1,5 +1,5 @@ %skeleton "lalr1.cc" /* -*- C++ -*- */ -%require "3.0" +%require "3.0.4" %defines %define parser_class_name {seclang_parser} %define api.token.constructor diff --git a/src/utils/regex.h b/src/utils/regex.h index c964d4e7e2..0ee974b5bc 100644 --- a/src/utils/regex.h +++ b/src/utils/regex.h @@ -42,6 +42,7 @@ class SMatch { public: SMatch() : size_(0) { } size_t size() { return size_; } + std::string str() { return match; } int size_; std::string match; }; diff --git a/test/unit/unit_test.cc b/test/unit/unit_test.cc index 9cdcaf82be..5bb7d85baf 100644 --- a/test/unit/unit_test.cc +++ b/test/unit/unit_test.cc @@ -21,11 +21,11 @@ #include #include #include -#include #include #include "common/colors.h" #include "src/utils.h" +#include "src/utils/regex.h" namespace modsecurity_test { @@ -44,7 +44,6 @@ std::string string_to_hex(const std::string& input) { return output; } - void replaceAll(std::string *s, const std::string &search, const char replace) { for (size_t pos = 0; ; pos += 0) { @@ -59,18 +58,19 @@ void replaceAll(std::string *s, const std::string &search, void json2bin(std::string *str) { - std::regex re("\\\\x([a-z0-9A-Z]{2})"); - std::regex re2("\\\\u([a-z0-9A-Z]{4})"); - std::smatch match; + modsecurity::Utils::Regex re("\\\\x([a-z0-9A-Z]{2})"); + modsecurity::Utils::Regex re2("\\\\u([a-z0-9A-Z]{4})"); + modsecurity::Utils::SMatch match; - while (std::regex_search(*str, match, re) && match.size() > 1) { + while (modsecurity::Utils::regex_search(*str, &match, re) && match.size() > 0) { unsigned int p; std::string toBeReplaced = match.str(); toBeReplaced.erase(0, 2); sscanf(toBeReplaced.c_str(), "%x", &p); replaceAll(str, match.str(), p); } - while (std::regex_search(*str, match, re2) && match.size() > 1) { + + while (modsecurity::Utils::regex_search(*str, &match, re2) && match.size() > 0) { unsigned int p; std::string toBeReplaced = match.str(); toBeReplaced.erase(0, 2);