From 017af2477eb478e95b2e2e09e3daffaf34979f2d Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 4 Oct 2017 20:24:54 +0200 Subject: [PATCH] BUG/MEDIUM: cli: fix "show fd" crash when dumping closed FDs I misplaced the "if (!fdt.owner)" test so it can occasionally crash when dumping an fd that's already been closed but still appears in the table. It's not critical since this was not pushed into any release nor backported though. --- src/cli.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cli.c b/src/cli.c index f1f0977..bfed024 100644 --- a/src/cli.c +++ b/src/cli.c @@ -812,6 +812,9 @@ static int cli_io_handler_show_fd(struct appctx *appctx) fdt = fdtab[fd]; + if (!fdt.owner) + goto skip; // closed + if (fdt.iocb == conn_fd_handler) { conn_flags = ((struct connection *)fdt.owner)->flags; li = objt_listener(((struct connection *)fdt.owner)->target); @@ -821,9 +824,6 @@ static int cli_io_handler_show_fd(struct appctx *appctx) else if (fdt.iocb == listener_accept) li = fdt.owner; - if (!fdt.owner) - goto skip; // closed - chunk_printf(&trash, " %5d : st=0x%02x(R:%c%c%c W:%c%c%c) ev=0x%02x(%c%c%c%c%c) [%c%c%c%c] cache=%u owner=%p iocb=%p(%s)", fd, -- 1.7.10.4