From 955f4613cb457a93bb278e47a9af19bf5479d27d Mon Sep 17 00:00:00 2001 From: Christian Ruppert Date: Wed, 29 Oct 2014 17:05:53 +0100 Subject: [PATCH] BUG/MEDIUM: regex: fix pcre_study error handling pcre_study() may return NULL even though it succeeded. In this case error is NULL otherwise error is not NULL. Also see man 3 pcre_study. Previously a ACL pattern of e.g. ".*" would cause error because pcre_study did not found anything to speed up matching and returned regex->extra = NULL and error = NULL which in this case was a false-positive. That happend only when PCRE_JIT was enabled for HAProxy but libpcre has been built without JIT. Signed-off-by: Christian Ruppert [wt: this needs to be backported to 1.5 as well] --- src/regex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/regex.c b/src/regex.c index dda666db2..c0b23cb12 100644 --- a/src/regex.c +++ b/src/regex.c @@ -290,7 +290,7 @@ int regex_comp(const char *str, struct my_regex *regex, int cs, int cap, char ** #ifdef USE_PCRE_JIT regex->extra = pcre_study(regex->reg, PCRE_STUDY_JIT_COMPILE, &error); - if (!regex->extra) { + if (!regex->extra && error != NULL) { pcre_free(regex->reg); memprintf(err, "failed to compile regex '%s' (error=%s)", str, error); return 0;