From: Willy Tarreau Date: Fri, 25 Sep 2015 18:08:51 +0000 (+0200) Subject: MINOR: cli: do not call the release handler on internal error. X-Git-Tag: v1.6-dev6~69 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5cfa3bcc22708571b674a40f1d9cdfa0657ab33e;p=thirdparty%2Fhaproxy.git MINOR: cli: do not call the release handler on internal error. It's dangerous to call this on internal state error, because it risks to perform a double-free. This can only happen when a state is not handled. Note that the switch/case currently doesn't offer any option for missed states since they're all declared. Better fix this anyway. The fix was tested by commenting out some entries in the switch/case. --- diff --git a/src/dumpstats.c b/src/dumpstats.c index 87e62eb7f6..bdfb7e3010 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -2554,8 +2554,7 @@ static void cli_io_handler(struct appctx *appctx) break; #endif default: /* abnormal state */ - cli_release_handler(appctx); - appctx->st0 = STAT_CLI_PROMPT; + si->flags |= SI_FL_ERR; break; }