Fixed nickname format parsing in JOIN notify and WHOIS reply.
authorPekka Riikonen <priikone@silcnet.org>
Wed, 16 May 2007 07:24:04 +0000 (07:24 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Wed, 16 May 2007 07:24:04 +0000 (07:24 +0000)
CHANGES
apps/irssi/src/silc/core/client_ops.c

diff --git a/CHANGES b/CHANGES
index d4e6c9e1abda10b34fda0b7b111de249642910f9..d68f8cfacdbd8e1b5f44c997a05d35d4764e9ad9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+Wed May 16 10:21:45 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed nickname format parsing in JOIN notify handling and
+         in WHOIS command reply.  Affected file is
+         apps/irssi/src/silc/core/client_ops.c.
+
 Wed May 16 09:34:10 EEST 2007  Pekka Riikonen <priikone@silcnet.org>
 
        * SILC Client 1.1 Beta4.
index d8bb1f01b2a8957cd219da3621dc7a956d29480b..58188feac26adc9edcd6737e583f3f8c0bb25009 100644 (file)
@@ -770,12 +770,13 @@ void silc_notify(SilcClient client, SilcClientConnection conn,
 
     /* If there are multiple same nicknames on channel now, tell it to user. */
     if (client_entry != server->conn->local_entry) {
-      char nick[128 + 1], tmp[32];
+      char *nick, tmp[32];
       int count = 0;
 
-      silc_parse_userfqdn(client_entry->nickname, nick, sizeof(nick), NULL, 0);
+      silc_client_nickname_parse(client, conn, client_entry->nickname, &nick);
       clients = silc_client_get_clients_local(client, conn, nick, TRUE);
       if (!clients || silc_dlist_count(clients) < 2) {
+       silc_free(nick);
        silc_client_list_free(client, conn, clients);
        break;
       }
@@ -793,6 +794,7 @@ void silc_notify(SilcClient client, SilcClientConnection conn,
                           buf, client_entry->nickname);
       }
       silc_client_list_free(client, conn, clients);
+      silc_free(nick);
     }
     break;
 
@@ -1507,7 +1509,7 @@ void silc_command_reply(SilcClient client, SilcClientConnection conn,
   switch(command) {
   case SILC_COMMAND_WHOIS:
     {
-      char buf[1024], *nickname, *username, *realname, nick[128 + 1];
+      char buf[1024], *nickname, *username, *realname, *nick;
       unsigned char *fingerprint;
       SilcUInt32 idle, mode, *user_modes;
       SilcDList channels;
@@ -1548,13 +1550,14 @@ void silc_command_reply(SilcClient client, SilcClientConnection conn,
       user_modes = va_arg(vp, SilcUInt32 *);
       attrs = va_arg(vp, SilcDList);
 
-      silc_parse_userfqdn(nickname, nick, sizeof(nick), NULL, 0);
+      silc_client_nickname_parse(client, conn, client_entry->nickname, &nick);
       printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP,
                         SILCTXT_WHOIS_USERINFO, nickname,
                         client_entry->username, client_entry->hostname,
                         nick, client_entry->nickname);
       printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP,
                         SILCTXT_WHOIS_REALNAME, realname);
+      silc_free(nick);
 
       if (channels && user_modes) {
        SilcChannelPayload entry;