X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fidlist.c;h=ab8f7d53af5abb6b9b0773020d25001fb2e4526d;hp=a04e11677f5f0ca9a2dd4a8d3856ea17f535238f;hb=aab72291cf0379050d3b327b43f366d7e886d7c8;hpb=ec4a54ed22b46fe1c02bc5ecbf0eb15c45fe7967 diff --git a/apps/silcd/idlist.c b/apps/silcd/idlist.c index a04e1167..ab8f7d53 100644 --- a/apps/silcd/idlist.c +++ b/apps/silcd/idlist.c @@ -494,7 +494,7 @@ silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id, SilcClientEntry silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id, - SilcClientID *new_id) + SilcClientID *new_id, const char *nickname) { SilcIDCacheEntry id_cache = NULL; SilcClientEntry client; @@ -518,12 +518,17 @@ silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id, /* Remove the old entry and add a new one */ - silc_idcache_del_by_context(id_list->clients, client); + if (!silc_idcache_del_by_context(id_list->clients, client)) + return NULL; silc_free(client->id); + silc_free(client->nickname); client->id = new_id; + client->nickname = nickname ? strdup(nickname) : NULL; - silc_idcache_add(id_list->clients, NULL, client->id, client, 0, NULL); + if (!silc_idcache_add(id_list->clients, client->nickname, client->id, + client, 0, NULL)) + return NULL; SILC_LOG_DEBUG(("Replaced"));