From: Christian Ruppert Date: Wed, 29 Oct 2014 16:05:53 +0000 (+0100) Subject: BUG/MEDIUM: regex: fix pcre_study error handling X-Git-Tag: v1.6-dev1~286 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=955f4613cb457a93bb278e47a9af19bf5479d27d;p=thirdparty%2Fhaproxy.git 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] --- diff --git a/src/regex.c b/src/regex.c index dda666db22..c0b23cb125 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;