Hi,

On 17.05.2014 04:01, Willy Tarreau wrote:
> Hi guys,
>
> On Fri, May 16, 2014 at 11:34:45PM +0200, Thomas Heil wrote:
>>>> So HAProxy crashes as soon as acl tries to use
>>>> acl ex_de hdr_reg(host) -i www\.example\.de
>>> Ok, so its probably about the modifications in src/pattern.c.
>> No it was in
>> #####
>> -diff --git a/src/cfgparse.c b/src/cfgparse.c
>> -index 9ec69a1..eb7ec20 100644
>> ---- a/src/cfgparse.c
>> -+++ b/src/cfgparse.c
>> -@@ -1578,8 +1578,6 @@ static int create_cond_regex_rule(const char
>> *file, int line,
>> -       if (dir == SMP_OPT_DIR_REQ && warnif_misplaced_reqxxx(px, file,
>> line, cmd))
>> -               err_code |= ERR_WARN;
>> -
>> --      free(errmsg);
>> --      return err_code;
>> -  err:
>> -       free(errmsg);
>> -       free(preg);
>> #####
> That's really strange, it looks like a double free or something like this!
>
> Hmmm wait a minute, there's a bug here. preg is of type regex_t. It cannot be
> freed with free(), but it needs a regfree() instead.
>
> So it's likely that the move of free(errmsg) has slightly modified the code
> path and helped the second free corrupt the memory better.
>
> Thomas, could you please confirm that the attached patch (untested) fixes it
> for you ? We might have a longstanding bug here.
>
> Thanks,
> Willy
>
The patch works. No crashes anymore. Thanks a lot,

cheers,
thomas


Reply via email to