]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: tools: do not create an empty arg from trailing spaces
authorWilly Tarreau <w@1wt.eu>
Fri, 2 May 2025 13:46:18 +0000 (15:46 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 5 May 2025 14:16:54 +0000 (16:16 +0200)
commit7e4a2f39efda621f0f4ffe29f392f62ed396e4b4
treeb49000ee670e1a4754719fe969415f34ec1773e0
parentaf5bbce66496d61499dec665a64738f7d0f52717
BUG/MINOR: tools: do not create an empty arg from trailing spaces

Trailing spaces on the lines of the config file create an empty arg
which makes it complicated to detect really empty args. Let's first
address this. Note that it is not user-visible but prevents from
fixing user-visible issues. No backport is needed.

The initial issue was introduced with this fix that already tried to
address it:

    8a6767d266 ("BUG/MINOR: config: don't count trailing spaces as empty arg (v2)")

The current patch properly addresses leading and trailing spaces by
only counting arguments if non-lws chars were found on the line. LWS
do not cause a transition to a new arg anymore but they complete the
current one. The whole new code relies on a state machine to detect
when to create an arg (!in_arg->in_arg), and when to close the current
arg. A special care was taken for word expansion in the form of
"${ARGS[*]}" which still continue to emit individual arguments past
the first LWS. This example works fine:

    ARGS="100 check inter 1000"
    server name 192.168.1."${ARGS[*]}"

It properly results in 6 args:

    "server", "name", "192.168.1.100", "check", "inter", "1000"

This fix should not have any visible user impact and is a bit tricky,
so it's best not to backport it, at least for a while.

Co-authored-by: Valentine Krasnobaeva <vkrasnobaeva@haproxy.com>
src/tools.c