From: William Lallemand Date: Mon, 19 Mar 2012 15:15:12 +0000 (+0100) Subject: BUG/MEDIUM: bad length in log_format and __send_log X-Git-Tag: v1.5-dev8~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfb099c3b3f1c11e5b03d79b829aa297c19d50f8;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/log.c b/src/log.c index f095297355..e016e330ce 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) {