]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: cli: do not call the release handler on internal error.
authorWilly Tarreau <w@1wt.eu>
Fri, 25 Sep 2015 18:08:51 +0000 (20:08 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 25 Sep 2015 19:16:03 +0000 (21:16 +0200)
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.

src/dumpstats.c

index 87e62eb7f65252c20897acf865bf0dcfb29ea0c7..bdfb7e30108094a933cda5daa9552317a0478cd1 100644 (file)
@@ -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;
                        }