From: Christopher Faulet Date: Fri, 7 Apr 2023 15:58:21 +0000 (+0200) Subject: BUG/MEDIUM: cli: Set SE_FL_EOI flag for '_getsocks' and 'quit' commands X-Git-Tag: v2.8-dev8~199 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33af99655eed963ca2f091097566c09a96a75e7c;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: cli: Set SE_FL_EOI flag for '_getsocks' and 'quit' commands An applet must never set SE_FL_EOS flag without SE_FL_EOI or SE_FL_ERROR flags. Here, SE_FL_EOI flag was missing for "quit" or "_getsocks" commands. Indeed, these commands are terminal. This bug triggers a BUG_ON() recently added. This patch is related to the issue #2107. It is 2.8-specific. No backport needed. --- diff --git a/src/cli.c b/src/cli.c index 1b4276ff92..0849cbe9a9 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2172,6 +2172,7 @@ out: ha_warning("Cannot make the unix socket non-blocking\n"); goto out; } + se_fl_set(appctx->sedesc, SE_FL_EOI); appctx->st0 = CLI_ST_END; free(cmsgbuf); free(tmpbuf); @@ -2186,9 +2187,11 @@ static int cli_parse_simple(char **args, char *payload, struct appctx *appctx, v else if (*args[0] == 'p') /* prompt */ appctx->st1 ^= APPCTX_CLI_ST1_PROMPT; - else if (*args[0] == 'q') + else if (*args[0] == 'q') { /* quit */ + se_fl_set(appctx->sedesc, SE_FL_EOI); appctx->st0 = CLI_ST_END; + } return 1; }