From: Aurélien Nephtali Date: Mon, 16 Apr 2018 16:50:19 +0000 (+0200) Subject: BUG/MINOR: cli: Guard against NULL messages when using CLI_ST_PRINT_FREE X-Git-Tag: v1.9-dev1~303 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c511b7cc97482e7193aa19b8e571fa2ac851ea46;p=thirdparty%2Fhaproxy.git BUG/MINOR: cli: Guard against NULL messages when using CLI_ST_PRINT_FREE Some error paths (especially those followed when running out of memory) can set the error message to NULL. In order to avoid a crash, use a generic message ("Out of memory") when this case arises. It should be backported to 1.8. Signed-off-by: Aurélien Nephtali --- diff --git a/src/cli.c b/src/cli.c index 018d508d32..965709ec83 100644 --- a/src/cli.c +++ b/src/cli.c @@ -625,14 +625,20 @@ static void cli_io_handler(struct appctx *appctx) else si_applet_cant_put(si); break; - case CLI_ST_PRINT_FREE: - if (cli_output_msg(res, appctx->ctx.cli.err, LOG_ERR, cli_get_severity_output(appctx)) != -1) { + case CLI_ST_PRINT_FREE: { + const char *msg = appctx->ctx.cli.err; + + if (!msg) + msg = "Out of memory.\n"; + + if (cli_output_msg(res, msg, LOG_ERR, cli_get_severity_output(appctx)) != -1) { free(appctx->ctx.cli.err); appctx->st0 = CLI_ST_PROMPT; } else si_applet_cant_put(si); break; + } case CLI_ST_CALLBACK: /* use custom pointer */ if (appctx->io_handler) if (appctx->io_handler(appctx)) {