stable-bot: Bugfixes waiting for a release 2.1 (4)

2020-06-23 Thread stable-bot
Hi,

This is a friendly bot that watches fixes pending for the next haproxy-stable 
release!  One such e-mail is sent periodically once patches are waiting in the 
last maintenance branch, and an ideal release date is computed based on the 
severity of these fixes and their merge date.  Responses to this mail must be 
sent to the mailing list.


Last release 2.1.7 was issued on 2020-06-09.  There are currently 4 patches in 
the queue cut down this way:
- 3 MEDIUM, first one merged on 2020-06-12
- 1 MINOR, first one merged on 2020-06-12

Thus the computed ideal release date for 2.1.8 would be 2020-07-10, which is in 
three weeks or less.

The current list of patches in the queue is:
 - 2.1   - MEDIUM  : pattern: fix thread safety of pattern 
matching
 - 2.1   - MEDIUM  : log: don't hold the log lock during 
writev() on a file descriptor
 - 2.1   - MEDIUM  : ssl: crt-list must continue parsing on 
ERR_WARN
 - 2.1   - MINOR   : ssl: fix ssl-{min,max}-ver with 
openssl < 1.1.0

-- 
The haproxy stable-bot is freely provided by HAProxy Technologies to help 
improve the quality of each HAProxy release.  If you have any issue with these 
emails or if you want to suggest some improvements, please post them on the 
list so that the solutions suiting the most users can be found.



Log the reason for SSL handshake failure

2020-06-23 Thread Marcel Menzel
Hello list,

after unsuccessful search in the documentation I am asking here if it's
possible to somehow make HAProxy log the reason why a SSL handshake
failed (especially on a frontend).
I am thinking of logging the SSL alert message, for example logging if
the message came from the server or the client, the AlertLevel and the
alert message:

"ft_https/1: SSL handshake failure: C>S fatal certificate_unknown"

We've had to deal with the expired AddTrust certificate and saw a lot of
logged SSL handshake failures, but since HAProxy doesn't log the reason
why a handshake failed we had to use tcpdump to get SSL alert number
leading to an aborted SSL handshake.


Kind regards,

Marcel Menzel


Re: [PATCH v3 0/2] PARSE_ERR_TOOMANY

2020-06-23 Thread Willy Tarreau
On Tue, Jun 23, 2020 at 06:56:08PM +0200, Tim Duesterhus wrote:
> Willy,
> 
> realized I forgot to update the commit reference in the first patch after the
> change now is in cfgparse instead of tools, so here is v3. Only the commit
> message changed compared to v2.

Just in time :-)

Now merged, thanks.
Willy



[PATCH v3 1/2] BUG/MINOR: cfgparse: Fix argument reference in PARSE_ERR_TOOMANY message

2020-06-23 Thread Tim Duesterhus
The returned `arg` value is the number of arguments found, but in case
of the error message it's not a valid argument index.

Because we know how many arguments we allowed (MAX_LINE_ARGS) we know
what to print in the error message, so do just that.

Consider a configuration like this:

listen foo
  1 2 3 [...] 64 65

Then running a configuration check within valgrind reports the following:

==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8B83: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Use of uninitialised value of size 8
==18265==at 0x56E576B: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E5775: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E91AF: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8C59: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E941A: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CAB: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CE2: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8

[PATCH v3 2/2] BUG/MINOR: cfgparse: Fix calculation of position for PARSE_ERR_TOOMANY message

2020-06-23 Thread Tim Duesterhus
The arguments are relative to the outline, not relative to the input line.

This patch fixes up commit 9e1758efbd68c8b1d27e17e2abee110f3ebe which
is 2.2 only. No backport needed.
---
 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/cfgparse.c b/src/cfgparse.c
index 2dc70c844..93faf4565 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1976,7 +1976,7 @@ next_line:
 
if (err & PARSE_ERR_TOOMANY) {
ha_alert("parsing [%s:%d]: too many words, 
truncating at word %d, position %ld: <%s>.\n",
-file, linenum, MAX_LINE_ARGS, 
(long)(args[MAX_LINE_ARGS-1] - thisline + 1), args[MAX_LINE_ARGS-1]);
+file, linenum, MAX_LINE_ARGS, 
(long)(args[MAX_LINE_ARGS-1] - outline + 1), args[MAX_LINE_ARGS-1]);
err_code |= ERR_ALERT | ERR_FATAL;
fatal++;
goto next_line;
-- 
2.27.0




[PATCH v3 0/2] PARSE_ERR_TOOMANY

2020-06-23 Thread Tim Duesterhus
Willy,

realized I forgot to update the commit reference in the first patch after the
change now is in cfgparse instead of tools, so here is v3. Only the commit
message changed compared to v2.

Best regards

Tim Düsterhus (2):
  BUG/MINOR: cfgparse: Fix argument reference in PARSE_ERR_TOOMANY
message
  BUG/MINOR: cfgparse: Fix calculation of position for PARSE_ERR_TOOMANY
message

 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.27.0




[PATCH v2 0/2] PARSE_ERR_TOOMANY

2020-06-23 Thread Tim Duesterhus
Willy,

Am 23.06.20 um 17:37 schrieb Willy Tarreau:
> On Tue, Jun 23, 2020 at 05:06:27PM +0200, Tim Duesterhus wrote:
>> Otherwise `arg++` will be executed for every argument after the maximum,
>> returning a bogus value.
> 
> No, it returns the correct one, as documented at the beginning of the
> function:
> 
>   ...  are not updated beyond  but the returned 
>indicates how many were found.
> 
> The purpose was to allow the caller to realloc() its array if it wants
> to read all the args. I couldn't find a single case where this arg is
> dereferenced inside the function so for me it's OK, but I could very
> well miss something.

I should read the comment :-)

> I think the problem you've spotted is entirely related to what you've
> fixed in the second patch in fact. Instead of args[arg-1] we need to
> use args[MAX_LINE_ARGS-1] which is the limit we've passed to the
> function. And of course your change from thisline to outline is right.

Oh, yeah. That's obviously correct, because we know how many arguments
we requested.

Updated series coming in.

Best regards

Tim Düsterhus (2):
  BUG/MINOR: cfgparse: Fix argument reference in PARSE_ERR_TOOMANY
message
  BUG/MINOR: cfgparse: Fix calculation of position for PARSE_ERR_TOOMANY
message

 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.27.0




[PATCH v2 1/2] BUG/MINOR: cfgparse: Fix argument reference in PARSE_ERR_TOOMANY message

2020-06-23 Thread Tim Duesterhus
The returned `arg` value is the number of arguments found, but in case
of the error message it's not a valid argument index.

Because we know how many arguments we allowed (MAX_LINE_ARGS) we know
what to print in the error message, so do just that.

Consider a configuration like this:

listen foo
  1 2 3 [...] 64 65

Then running a configuration check within valgrind reports the following:

==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8B83: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Use of uninitialised value of size 8
==18265==at 0x56E576B: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E5775: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E91AF: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8C59: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E941A: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CAB: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CE2: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8

[PATCH v2 2/2] BUG/MINOR: cfgparse: Fix calculation of position for PARSE_ERR_TOOMANY message

2020-06-23 Thread Tim Duesterhus
The arguments are relative to the outline, not relative to the input line.

This patch fixes up commit 9e1758efbd68c8b1d27e17e2abee110f3ebe which
is 2.2 only. No backport needed.
---
 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/cfgparse.c b/src/cfgparse.c
index 2dc70c844..93faf4565 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1976,7 +1976,7 @@ next_line:
 
if (err & PARSE_ERR_TOOMANY) {
ha_alert("parsing [%s:%d]: too many words, 
truncating at word %d, position %ld: <%s>.\n",
-file, linenum, MAX_LINE_ARGS, 
(long)(args[MAX_LINE_ARGS-1] - thisline + 1), args[MAX_LINE_ARGS-1]);
+file, linenum, MAX_LINE_ARGS, 
(long)(args[MAX_LINE_ARGS-1] - outline + 1), args[MAX_LINE_ARGS-1]);
err_code |= ERR_ALERT | ERR_FATAL;
fatal++;
goto next_line;
-- 
2.27.0




Re: [PATCH 1/2] BUG/MINOR: tools: Leave parse_line after exceeding argsmax

2020-06-23 Thread Willy Tarreau
Hi Tim,

On Tue, Jun 23, 2020 at 05:06:27PM +0200, Tim Duesterhus wrote:
> Otherwise `arg++` will be executed for every argument after the maximum,
> returning a bogus value.

No, it returns the correct one, as documented at the beginning of the
function:

  ...  are not updated beyond  but the returned 
   indicates how many were found.

The purpose was to allow the caller to realloc() its array if it wants
to read all the args. I couldn't find a single case where this arg is
dereferenced inside the function so for me it's OK, but I could very
well miss something.

I think the problem you've spotted is entirely related to what you've
fixed in the second patch in fact. Instead of args[arg-1] we need to
use args[MAX_LINE_ARGS-1] which is the limit we've passed to the
function. And of course your change from thisline to outline is right.

Willy



[PATCH 2/2] BUG/MINOR: cfgparse: Fix calculation of position for PARSE_ERR_TOOMANY

2020-06-23 Thread Tim Duesterhus
The arguments are relative to the outline, not relative to the input line.

This patch fixes up commit 9e1758efbd68c8b1d27e17e2abee110f3ebe which
is 2.2 only. No backport needed.
---
 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/cfgparse.c b/src/cfgparse.c
index 257df05a1..e4489b815 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1976,7 +1976,7 @@ next_line:
 
if (err & PARSE_ERR_TOOMANY) {
ha_alert("parsing [%s:%d]: too many words, 
truncating at word %d, position %ld: <%s>.\n",
-file, linenum, arg, (long)(args[arg-1] 
- thisline + 1), args[arg-1]);
+file, linenum, arg, (long)(args[arg-1] 
- outline + 1), args[arg-1]);
err_code |= ERR_ALERT | ERR_FATAL;
fatal++;
goto next_line;
-- 
2.27.0




[PATCH 1/2] BUG/MINOR: tools: Leave parse_line after exceeding argsmax

2020-06-23 Thread Tim Duesterhus
Otherwise `arg++` will be executed for every argument after the maximum,
returning a bogus value.

Consider a configuration like this:

listen foo
  1 2 3 [...] 64 65

Then running a configuration check within valgrind reports the following:

==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8B83: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Use of uninitialised value of size 8
==18265==at 0x56E576B: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E5775: _itoa_word (_itoa.c:179)
==18265==by 0x56E912C: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E91AF: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8C59: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E941A: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CAB: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18265==by 0x507CB5: init (haproxy.c:2029)
==18265==by 0x4182A2: main (haproxy.c:3137)
==18265==
==18265== Conditional jump or move depends on uninitialised value(s)
==18265==at 0x56E8CE2: vfprintf (vfprintf.c:1631)
==18265==by 0x57B1895: __vsnprintf_chk (vsnprintf_chk.c:63)
==18265==by 0x4A8642: vsnprintf (stdio2.h:77)
==18265==by 0x4A8642: memvprintf (tools.c:3647)
==18265==by 0x4CB8A4: print_message (log.c:1085)
==18265==by 0x4CE0AC: ha_alert (log.c:1128)
==18265==by 0x459E41: readcfgfile (cfgparse.c:1978)
==18