From 54f6a586cdb74883548d005accb8dfaf42d93c14 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 1 Feb 2010 16:31:14 +0100 Subject: [PATCH] [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. --- src/cfgparse.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cfgparse.c b/src/cfgparse.c index 4263f9432..4036e29b5 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;