silcd: IDENTIFY command reply didn't save client correctly
authorPekka Riikonen <priikone@silcnet.org>
Tue, 3 Mar 2009 05:52:58 +0000 (07:52 +0200)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 3 Mar 2009 05:52:58 +0000 (07:52 +0200)
The IDENTIFY command reply added sometimes new client without
duplicating the nickname of the client thus causing odd crashes later
when trying to free the nickname.

apps/silcd/command_reply.c
apps/silcd/silcd.c

index a31588d6e71d529ba4f54e0b5ee12b81fa36b2a5..688b85674bc93c79768348f2a1671dfdf651de9d 100644 (file)
@@ -652,7 +652,8 @@ silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
         to global list since server didn't have it in the lists so it must be
         global. */
       client = silc_idlist_add_client(server->global_list,
-                                     nick[0] ? nick : NULL, info, NULL,
+                                     nick[0] ? strdup(nick) : NULL, 
+                                     info, NULL,
                                      silc_id_dup(&client_id, SILC_ID_CLIENT),
                                      silc_packet_get_context(cmd->sock),
                                      NULL);
index 3d4db10eab7133df3875aa3393dbdbe5358f3777..cc4d7ff39ab9dc886991d8d80621ef87de15642b 100644 (file)
@@ -462,7 +462,7 @@ static DebugLevel debug_levels[] = {
   { 7, "silcd\\.c,server\\.c,command\\.c,server_backup\\.c,packet_send\\.c" },
 
   /* All basic stuff from silcd/ */
-  { 10, "silc_server_*,*silc_id_create_*" },
+  { 10, "silc_server_*,*silc_id_create_*,*idlist*" },
 
   /* All from silcd/ */
   { 15, "*silcd*,*serverid*,silc_server_*,*idlist*" },