From f5a51141c5f33b6a816b36fe3adcedb53df818b9 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 8 Jan 2008 14:31:26 +0000 Subject: [PATCH] Fixed silc_nickname_parse to return valid nickname when it returns TRUE. --- CHANGES.TOOLKIT | 8 +++++++- lib/silcclient/client_entry.c | 11 +++-------- lib/silcclient/command.c | 13 ++++++++----- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGES.TOOLKIT b/CHANGES.TOOLKIT index 6af09f12..1e4a3ccb 100644 --- a/CHANGES.TOOLKIT +++ b/CHANGES.TOOLKIT @@ -1,4 +1,10 @@ -Thu Nov 15 16:45:48 EET 2007 Pekka Riikonen +Tue Jan 8 16:24:56 EET 2008 Pekka Riikonen + + * Fixed silc_nickname_parse to always return valid nickname + when it returns TRUE. Affected files are + lib/silcclient/client_entry,c and command.c + +Thu Nov 15 16:45:48 EET 2007 Pekka Riikonen * Fixed public key authentication as responder. Affected file is lib/silcske/silcconnauth.c. diff --git a/lib/silcclient/client_entry.c b/lib/silcclient/client_entry.c index 9510b404..32f272ec 100644 --- a/lib/silcclient/client_entry.c +++ b/lib/silcclient/client_entry.c @@ -85,13 +85,8 @@ SilcDList silc_client_get_clients_local_ext(SilcClient client, if (!silc_client_nickname_parse(client, conn, (char *)nick, &parsed)) return NULL; - if (!get_all && parsed) + if (!get_all) format = (char *)nick; - if (!parsed) { - parsed = silc_memdup(nick, strlen(nick)); - if (!parsed) - return NULL; - } SILC_LOG_DEBUG(("Find clients by nickname %s", parsed)); @@ -124,7 +119,7 @@ SilcDList silc_client_get_clients_local_ext(SilcClient client, } silc_list_start(list); - if (!format && get_all) { + if (get_all) { /* Take all without any further checking */ while ((id_cache = silc_list_get(list))) { entry = id_cache->context; @@ -1298,7 +1293,7 @@ SilcBool silc_client_nickname_parse(SilcClient client, int len; if (!client->internal->params->nickname_format[0]) { - *ret_nick = NULL; + *ret_nick = silc_strdup(nickname); return TRUE; } diff --git a/lib/silcclient/command.c b/lib/silcclient/command.c index abc94ef8..a50ab523 100644 --- a/lib/silcclient/command.c +++ b/lib/silcclient/command.c @@ -731,9 +731,8 @@ SILC_FSM_STATE(silc_client_command_whois) } if (nick) { - silc_client_nickname_parse(client, conn, cmd->argv[1], &nickname); - if (!nickname) - nickname = strdup(cmd->argv[1]); + if (!silc_client_nickname_parse(client, conn, cmd->argv[1], &nickname)) + goto out; } /* Send command */ @@ -1051,7 +1050,10 @@ SILC_FSM_STATE(silc_client_command_invite) /* Parse the typed nickname. */ if (cmd->argc == 3) { if (cmd->argv[2][0] != '+' && cmd->argv[2][0] != '-') { - silc_client_nickname_parse(client, conn, cmd->argv[2], &nickname); + if (!silc_client_nickname_parse(client, conn, cmd->argv[2], &nickname)) { + silc_client_unref_channel(client, conn, channel); + goto out; + } /* Find client entry */ clients = silc_client_get_clients_local(client, conn, cmd->argv[2], @@ -2120,7 +2122,8 @@ SILC_FSM_STATE(silc_client_command_cumode) } /* Parse the typed nickname. */ - silc_client_nickname_parse(client, conn, cmd->argv[3], &nickname); + if (!silc_client_nickname_parse(client, conn, cmd->argv[3], &nickname)) + goto out; /* Find client entry */ clients = silc_client_get_clients_local(client, conn, cmd->argv[3], FALSE); -- 2.24.0