From da798b47cf2734868609f6563b73386335fa1f76 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sun, 20 Apr 2008 18:54:53 +0300 Subject: [PATCH] Fixed KILL command related crash in silcd --- apps/silcd/command.c | 5 ++--- apps/silcd/server.c | 4 +++- apps/silcd/server_util.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/silcd/command.c b/apps/silcd/command.c index c4b0edbe..77d0eb64 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -1474,9 +1474,8 @@ SILC_SERVER_CMD_FUNC(kill) sock = remote_client->connection; silc_server_remove_from_channels(server, NULL, remote_client, TRUE, (char *)"Killed", TRUE, TRUE); - silc_server_free_client_data(server, NULL, remote_client, TRUE, - comment ? comment : - (unsigned char *)"Killed"); + silc_server_free_sock_user_data(server, sock, comment ? comment : + (unsigned char *)"Killed"); if (sock) silc_server_close_connection(server, sock); } else { diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 751abc7a..7453f5f5 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -2996,8 +2996,10 @@ void silc_server_free_client_data(SilcServer server, SILC_OPER_STATS_UPDATE(client, router, SILC_UMODE_ROUTER_OPERATOR); silc_schedule_task_del_by_context(server->schedule, client); - if (client->data.sconn) + if (client->data.sconn) { silc_server_connection_free(client->data.sconn); + client->data.sconn = NULL; + } /* We will not delete the client entry right away. We will take it into history (for WHOWAS command) for 5 minutes, unless we're diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 1e8e79fe..d9fc0ffc 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -1543,7 +1543,7 @@ void silc_server_kill_client(SilcServer server, if (remote_client->connection) { /* Remove locally conneted client */ SilcPacketStream sock = remote_client->connection; - silc_server_free_client_data(server, sock, remote_client, FALSE, NULL); + silc_server_free_sock_user_data(server, sock, NULL); silc_server_close_connection(server, sock); } else { /* Update statistics */ -- 2.24.0