From 71ede76c68104c43a9f6980564fb6283a7f19473 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Mon, 31 Aug 2009 11:37:27 +0000 Subject: [PATCH] Don't call tty_free unless the client is a terminal, otherwise tty_init hasn't been called and it may end up doing close(0). From Kalle Olavi Niemitalo. --- server.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server.c b/server.c index 3f15ca41..0780e6b1 100644 --- a/server.c +++ b/server.c @@ -915,7 +915,12 @@ server_lost_client(struct client *c) } log_debug("lost client %d", c->ibuf.fd); - tty_free(&c->tty); + /* + * If CLIENT_TERMINAL hasn't been set, then tty_init hasn't been called + * and tty_free might close an unrelated fd. + */ + if (c->flags & CLIENT_TERMINAL) + tty_free(&c->tty); screen_free(&c->status);