]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: cli: also free the trash chunk on the error path
authorWilly Tarreau <w@1wt.eu>
Mon, 20 Oct 2025 12:50:27 +0000 (14:50 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 20 Oct 2025 12:58:53 +0000 (14:58 +0200)
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.

src/cli.c

index 331764531fe50a630236398f97f1c799682c4818..fcb995a01ac82fb73741e7176474c62ddc25b9ae 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -1310,6 +1310,8 @@ void cli_io_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) {
                appctx->cli_ctx.io_release(appctx);
                appctx->cli_ctx.io_release = NULL;