]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: log: LF upsets maxlen for UDP targets
authorAurelien DARRAGON <adarragon@haproxy.com>
Tue, 27 Jun 2023 09:32:06 +0000 (11:32 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 10 Jul 2023 16:28:08 +0000 (18:28 +0200)
A regression was introduced with 5464885 ("MEDIUM: log/sink: re-work
and merge of build message API.").

For UDP targets, a final '\n' is systematically inserted, but with the
rework of the build message API, it is inserted after the maxlen
limitation has been enforced, so this can lead to the final message
becoming maxlen+1. For strict syslog servers that only accept up to
maxlen characters, this could be a problem.

To fix the regression, we take the final '\n' into account prior to
building the message, like it was done before the rework of the API.

This should be backported up to 2.4.

src/log.c

index 95a4b638177a4ca2f4c660013187f2e0d1420780..916212ee7e97aaa7403a6bec04f05b4db21b9d8a 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -1701,7 +1701,7 @@ static inline void __do_send_log(struct logsrv *logsrv, int nblogger, int level,
        }
        else {
                int i = 0;
-               int totlen = logsrv->maxlen;
+               int totlen = logsrv->maxlen - 1; /* save space for the final '\n' */
 
                for (i = 0 ; i < nbelem ; i++ ) {
                        iovec[i].iov_base = msg_header[i].ptr;