BUG/MEDIUM: cli: also free the trash chunk on the error path

Since commit 20ec1de214 ("MAJOR: cli: Refacor parsing and execution of
pipelined commands"), command not returning any response (e.g. "quit")
don't pass through the free_trash_chunk() call, possibly leaking the
cmdline buffer. A typical way to reproduce it is to loop on "quit" on
the CLI, though it very likely affects other specific commands.

Let's make sure in the release handler that we always release that
chunk in any case. This must be backported to 3.2.
This commit is contained in:
Willy Tarreau 2025-10-20 14:50:27 +02:00
parent edd21121d2
commit e63e98f1d8

View File

@ -1310,6 +1310,8 @@ void cli_io_handler(struct appctx *appctx)
*/ */
static void cli_release_handler(struct appctx *appctx) static void cli_release_handler(struct appctx *appctx)
{ {
free_trash_chunk(appctx->cli_ctx.cmdline);
if (appctx->cli_ctx.io_release) { if (appctx->cli_ctx.io_release) {
appctx->cli_ctx.io_release(appctx); appctx->cli_ctx.io_release(appctx);
appctx->cli_ctx.io_release = NULL; appctx->cli_ctx.io_release = NULL;