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.
This commit is contained in:
Willy Tarreau 2025-05-05 17:33:22 +02:00
parent 08d3caf30e
commit 09a325a4de

View File

@ -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.
*/