From 1abffc9893ea4ad4335c0cb80cfdb30f6ab30bd2 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Wed, 30 Mar 2005 19:55:35 +0000 Subject: [PATCH] Fixed memory leaks. --- apps/silcd/command.c | 3 ++- apps/silcd/server_query.c | 36 ++++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/apps/silcd/command.c b/apps/silcd/command.c index d0cf76a3..b16e4137 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -696,7 +696,7 @@ SILC_SERVER_CMD_FUNC(nick) client->id = new_id; silc_free(client->nickname); - client->nickname = nick; + client->nickname = strdup(nick); /* Update client cache */ silc_idcache_add(server->local_list->clients, nickc, @@ -2567,6 +2567,7 @@ SILC_SERVER_CMD_FUNC(join) silc_free(client_id); out: + silc_free(channel_namec); silc_server_command_free(cmd); } diff --git a/apps/silcd/server_query.c b/apps/silcd/server_query.c index 7ccdd809..db8634fc 100644 --- a/apps/silcd/server_query.c +++ b/apps/silcd/server_query.c @@ -515,14 +515,14 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query) /* Check nickname */ tmp = silc_identifier_check(query->nickname, strlen(query->nickname), SILC_STRING_UTF8, 128, &tmp_len); - silc_free(query->nickname); if (!tmp) { - silc_server_query_add_error(server, query, 1, 1, - SILC_STATUS_ERR_BAD_NICKNAME); - query->nickname = NULL; - } else { - query->nickname = tmp; + silc_server_query_send_error(server, query, + SILC_STATUS_ERR_BAD_NICKNAME, 0); + silc_server_query_free(query); + return; } + silc_free(query->nickname); + query->nickname = tmp; } /* Try get server name */ @@ -531,11 +531,13 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query) /* Check server name */ tmp = silc_identifier_check(tmp, tmp_len, SILC_STRING_UTF8, 256, &tmp_len); - if (!tmp) - silc_server_query_add_error(server, query, 1, 1, - SILC_STATUS_ERR_BAD_SERVER); - else - query->server_name = tmp; + if (!tmp) { + silc_server_query_send_error(server, query, + SILC_STATUS_ERR_BAD_SERVER, 0); + silc_server_query_free(query); + return; + } + query->server_name = tmp; } /* Get channel name */ @@ -544,11 +546,13 @@ void silc_server_query_parse(SilcServer server, SilcServerQuery query) /* Check channel name */ tmp = silc_identifier_check(tmp, tmp_len, SILC_STRING_UTF8, 256, &tmp_len); - if (!tmp) - silc_server_query_add_error(server, query, 1, 1, - SILC_STATUS_ERR_BAD_SERVER); - else - query->channel_name = tmp; + if (!tmp) { + silc_server_query_send_error(server, query, + SILC_STATUS_ERR_BAD_CHANNEL, 0); + silc_server_query_free(query); + return; + } + query->channel_name = tmp; } if (!query->nickname && !query->server_name && !query->channel_name) { -- 2.24.0