From bfb099c3b3f1c11e5b03d79b829aa297c19d50f8 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Mon, 19 Mar 2012 16:15:12 +0100 Subject: [PATCH] BUG/MEDIUM: bad length in log_format and __send_log __send_log(): the size of the buffer sent is wrong when the facility is lower than 3 digits. logformat_write_string(): computation of size is wrong Note: this was introduced after 1.5-dev7, no backport needed. --- src/log.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/log.c b/src/log.c index f09529735..e016e330c 100644 --- a/src/log.c +++ b/src/log.c @@ -506,7 +506,7 @@ char *logformat_write_string(char *dst, char *src, size_t size, struct logformat return NULL; } dst += strlcpy2(dst, src, size); - size -= orig - dst + 1; + size -= dst - orig + 1; if (size > 1) { *(dst++) = '"'; *dst = '\0'; @@ -672,7 +672,7 @@ void __send_log(struct proxy *p, int level, char *message, size_t size) } while (fac_level && log_ptr > dataptr); *log_ptr = '<'; - sent = sendto(*plogfd, log_ptr, size, + sent = sendto(*plogfd, log_ptr, size + log_ptr - dataptr, MSG_DONTWAIT | MSG_NOSIGNAL, (struct sockaddr *)&logsrv->addr, get_addr_len(&logsrv->addr)); if (sent < 0) {