]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: bad length in log_format and __send_log
authorWilliam Lallemand <wlallemand@exceliance.fr>
Mon, 19 Mar 2012 15:15:12 +0000 (16:15 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 19 Mar 2012 16:15:13 +0000 (17:15 +0100)
__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

index f09529735562962260d05a0f3d0db4616ce8d7e0..e016e330ce75e5f0a2ab056582a7b5f963fee1e9 100644 (file)
--- 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) {