SILC_GET16_MSB(idp_len, client_id_list->data + 2);
idp_len += 4;
client_id = silc_id_payload_parse_id(client_id_list->data, idp_len);
- if (!client_id)
+ if (!client_id) {
+ silc_buffer_pull(client_id_list, idp_len);
continue;
+ }
/* Get the client entry */
if (silc_idcache_find_by_id_one_ext(i->conn->client_cache,
SILC_GET16_MSB(idp_len, client_id_list->data + 2);
idp_len += 4;
client_id = silc_id_payload_parse_id(client_id_list->data, idp_len);
- if (!client_id)
+ if (!client_id) {
+ silc_buffer_pull(client_id_list, idp_len);
continue;
+ }
/* Check if we have this client cached already. */
id_cache = NULL;
silc_free(client_entry->realname);
silc_free(client_entry->server);
silc_free(client_entry->id);
+ silc_free(client_entry->fingerprint);
if (client_entry->send_key)
silc_cipher_free(client_entry->send_key);
if (client_entry->receive_key)
len = 0;
for (i = 0; i < clients_count; i++)
- if (clients[i]->valid)
+ if (clients[i]->valid && clients[i] != client_entry)
len++;
if (!len)
return;