From 09a325a4de4aedd8d7d366769d4dd7c5d9a44f25 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 5 May 2025 17:33:22 +0200 Subject: [PATCH] BUG/MINOR: tools: always terminate empty lines Since latest commit 7e4a2f39ef ("BUG/MINOR: tools: do not create an empty arg from trailing spaces"), an empty line will no longer produce an arg and no longer append a trailing zero to them. This was not visible because one is already present in the input string, however all the trailing args are set to out+outpos-1, which now points one char before the buffer since nothing was emitted, and was noticed by ASAN, and/or when parsing garbage. Let's make sure to always emit the zero for empty lines as well to address this issue. No backport is needed unless the patch above gets backported. --- src/tools.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools.c b/src/tools.c index 06b8b2018..fbb4c4781 100644 --- a/src/tools.c +++ b/src/tools.c @@ -6507,6 +6507,10 @@ uint32_t parse_line(char *in, char *out, size_t *outlen, char **args, int *nbarg *nbargs = arg; *outlen = outpos; + /* make sure empty lines are terminated */ + if (!arg) + EMIT_CHAR(0); + /* empty all trailing args by making them point to the trailing zero, * at least the last one in any case. */ -- 2.39.5