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 <aurelien.nephtali@corp.ovh.com>
diff --git a/src/cli.c b/src/cli.c
index 018d508..965709e 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -625,14 +625,20 @@
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)) {