-Thu Nov 15 16:45:48 EET 2007 Pekka Riikonen <priikone@silcnet.org>
+Tue Jan 8 16:24:56 EET 2008 Pekka Riikonen <priikone@silcnet.org>
+
+ * 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 <priikone@silcnet.org>
* Fixed public key authentication as responder. Affected file
is lib/silcske/silcconnauth.c.
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));
}
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;
int len;
if (!client->internal->params->nickname_format[0]) {
- *ret_nick = NULL;
+ *ret_nick = silc_strdup(nickname);
return TRUE;
}
}
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 */
/* 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],
}
/* 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);