BUG/MAJOR: log: don't try to emit a log if no logger is set

send_log() calls update_hdr() to build a log header. It may happen
that no logger is defined at all but that we try to send a log anyway
(eg: upon startup). This results in a segfault when building the log
header because logline was never allocated.

This bug was revealed by the recent log-tag changes because the logline
is dereferenced after the call to snprintf(). So in 1.5 on most platforms
it has no impact because snprintf() will ignore NULL, but not necessarily
on all platforms.

The fix needs to be backported to 1.5.
This commit is contained in:
Willy Tarreau 2015-01-15 16:29:53 +01:00
parent 319f745ba0
commit 8c97ab5eb2

View File

@ -772,7 +772,7 @@ void send_log(struct proxy *p, int level, const char *format, ...)
char *dataptr;
int data_len;
if (level < 0 || format == NULL)
if (level < 0 || format == NULL || logline == NULL)
return;
dataptr = update_log_hdr(p->log_tag ? p->log_tag : global.log_tag); /* update log header and skip it */