From: Willy Tarreau Date: Mon, 1 Feb 2010 15:31:14 +0000 (+0100) Subject: [BUG] config: reset check request to avoid double free when switching to ssl/sql X-Git-Tag: v1.4-rc1~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=54f6a586cdb74883548d005accb8dfaf42d93c14;p=thirdparty%2Fhaproxy.git [BUG] config: reset check request to avoid double free when switching to ssl/sql SSL and SQL checks did only perform a free() of the request without replacing it, so having multiple SSL/SQL check declarations after another check type causes a double free condition during config parsing. This should be backported although it's harmless. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 4263f94324..4036e29b55 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2647,6 +2647,7 @@ stats_error_parsing: /* use HTTP request to check servers' health */ free(curproxy->check_req); + curproxy->check_req = NULL; curproxy->options &= ~PR_O_SSL3_CHK; curproxy->options &= ~PR_O_SMTP_CHK; curproxy->options2 &= ~PR_O2_MYSQL_CHK; @@ -2677,6 +2678,7 @@ stats_error_parsing: err_code |= ERR_WARN; free(curproxy->check_req); + curproxy->check_req = NULL; curproxy->options &= ~PR_O_HTTP_CHK; curproxy->options &= ~PR_O_SMTP_CHK; curproxy->options2 &= ~PR_O2_MYSQL_CHK; @@ -2685,6 +2687,7 @@ stats_error_parsing: else if (!strcmp(args[1], "smtpchk")) { /* use SMTP request to check servers' health */ free(curproxy->check_req); + curproxy->check_req = NULL; curproxy->options &= ~PR_O_HTTP_CHK; curproxy->options &= ~PR_O_SSL3_CHK; curproxy->options2 &= ~PR_O2_MYSQL_CHK; @@ -2710,6 +2713,7 @@ stats_error_parsing: else if (!strcmp(args[1], "mysql-check")) { /* use MYSQL request to check servers' health */ free(curproxy->check_req); + curproxy->check_req = NULL; curproxy->options &= ~PR_O_HTTP_CHK; curproxy->options &= ~PR_O_SSL3_CHK; curproxy->options &= ~PR_O_SMTP_CHK;