diff --git a/src/utils/regex.cc b/src/utils/regex.cc index 461f0288a7..6baefc3237 100644 --- a/src/utils/regex.cc +++ b/src/utils/regex.cc @@ -47,6 +47,10 @@ Regex::Regex(const std::string& pattern_) &errptr, &erroffset, NULL); m_pce = pcre_study(m_pc, pcre_study_opt, &errptr); + m_pce->match_limit = MODSEC_PCRE_MATCH_LIMIT; + m_pce->match_limit_recursion = MODSEC_PCRE_MATCH_LIMIT_RECURSION; + m_pce->flags |= PCRE_EXTRA_MATCH_LIMIT; + m_pce->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; } diff --git a/src/utils/regex.h b/src/utils/regex.h index 92eb118b46..de80a5b89b 100644 --- a/src/utils/regex.h +++ b/src/utils/regex.h @@ -28,6 +28,8 @@ namespace modsecurity { namespace Utils { #define OVECCOUNT 900 +#define MODSEC_PCRE_MATCH_LIMIT 1500 +#define MODSEC_PCRE_MATCH_LIMIT_RECURSION 1500 class SMatch { public: