BUG/MEDIUM: mcli: do not try to parse empty buffers
authorWilly Tarreau <w@1wt.eu>
Thu, 20 Jan 2022 07:31:50 +0000 (08:31 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 26 Jan 2022 03:37:15 +0000 (04:37 +0100)
commitc67d764d8ae636c378951243fa4038e2dedbf7a8
tree4c4e21dfd4ed4e3882f7cb1984fabe7eaf5b4475
parent34cf2ca548d238b53e079cfc48fabca1b2aad3ca
BUG/MEDIUM: mcli: do not try to parse empty buffers

When pcli_parse_request() is called with an empty buffer, it still tries
to parse it and can go on believing it finds an empty request if the last
char before the beginning of the buffer is a '\n'. In this case it overwrites
it with a zero and processes it as an empty command, doing nothing but not
making the buffer progress. This results in an infinite loop that is stopped
by the watchdog. For a reason related to another issue (yet to be fixed),
this can easily be reproduced by pipelining lots of commands such as
"show version".

Let's add a length check after the search for a '\n'.

This needs to be backported as far as 2.0.

(cherry picked from commit 6cd93f52e974aca4dac7aa2756c4e17659ae5354)
Signed-off-by: Willy Tarreau <w@1wt.eu>
src/cli.c