]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: log: fixing bug in tcp syslog_io_handler Octet-Counting
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 26 Oct 2022 21:40:08 +0000 (23:40 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 27 Oct 2022 09:28:53 +0000 (11:28 +0200)
syslog_io_handler does specific treatment to handle syslog tcp octet
counting:

Logic was good, but a sneaky mistake prevented
rfc-6587 octet counting from working properly.

trash.area was used as an input buffer.
It does not make sense here since it is uninitialized.
Compilation was unaffected because trash is a thread
local "global" variable.

buf->area should definitely be used instead.

This should be backported as far as 2.4.

src/log.c

index b3865e99e440b8c9b9f402df58121bd16f44be9a..5be654c9fb7e512659e0e8d027c87bc993c48d3c 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -3626,7 +3626,7 @@ static void syslog_io_handler(struct appctx *appctx)
                        if (buf->area[to_skip - 1] != ' ')
                                goto parse_error;
 
-                       msglen = strtol(trash.area, &p, 10);
+                       msglen = strtol(buf->area, &p, 10);
                        if (!msglen || p != &buf->area[to_skip - 1])
                                goto parse_error;