Fixed silc_nickname_parse to return valid nickname when it returns
authorPekka Riikonen <priikone@silcnet.org>
Tue, 8 Jan 2008 14:31:26 +0000 (14:31 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 8 Jan 2008 14:31:26 +0000 (14:31 +0000)
TRUE.

CHANGES.TOOLKIT
lib/silcclient/client_entry.c
lib/silcclient/command.c

index 6af09f12b8f1fd158935af6cf9dec44f6aafd34d..1e4a3ccb475fb56bfd68b24b768e531067f8fcfb 100644 (file)
@@ -1,4 +1,10 @@
-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.
index 9510b40441ae4b9be375982ad6895f0c65fe361e..32f272ec189b8fdff80cd6593cd9e72c3675b58c 100644 (file)
@@ -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;
   }
 
index abc94ef873da41bcb5bde3bc0fa31d48435c9ff8..a50ab52304b83e575d2dc274cea5d8e75e038170 100644 (file)
@@ -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);