From 7428855aff83c6dd40431bb88d3f1e5c973e7c06 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sat, 1 Dec 2001 14:32:47 +0000 Subject: [PATCH] updates. --- CHANGES | 18 ++++++ apps/silcd/command.c | 5 +- apps/silcd/idlist.c | 20 +++--- apps/silcd/packet_receive.c | 4 +- apps/silcd/packet_send.c | 1 + apps/silcd/protocol.c | 4 +- apps/silcd/server.c | 5 +- lib/silcclient/protocol.c | 4 +- lib/silccore/silccommand.c | 4 +- lib/silccore/silcidcache.c | 4 ++ lib/silccrypt/rsa.c | 46 ++++++++++---- lib/silccrypt/rsa_internal.h | 4 +- lib/silccrypt/silcpkcs.c | 4 +- lib/silcsim/Makefile.am | 4 +- lib/silcske/groups.c | 21 +++++- lib/silcske/groups.h | 116 ++++++++++++++++++++++++++++++++-- lib/silcske/groups_internal.h | 3 + lib/silcske/silcske.c | 13 ++-- 18 files changed, 226 insertions(+), 54 deletions(-) diff --git a/CHANGES b/CHANGES index 388e17c7..4cbc242e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,21 @@ +Sat Dec 1 12:52:39 EET 2001 Pekka Riikonen + + * Memory leak fixes in: + + lib/silcutil/silcsockconn.c + lib/silcske/silcske.c + lib/silcske/groups.c + lib/silccrypt/rsa.c + lib/silccrypt/silcpkcs.c + lib/silccore/silccommand.c + lib/silccore/silcidcache.c + silcd/idlist.c + silcd/packet_send.c + silcd/command.c + + * ROBOdoc documented the lib/silcske/groups.h file and a + bit changed the interface for better. + Thu Nov 29 22:12:50 EET 2001 Pekka Riikonen ' * Update the client entry context in the ID cache after diff --git a/apps/silcd/command.c b/apps/silcd/command.c index 25b642f4..5316ee99 100644 --- a/apps/silcd/command.c +++ b/apps/silcd/command.c @@ -2194,6 +2194,9 @@ SILC_SERVER_CMD_FUNC(list) silc_server_command_list_send_reply(cmd, lchannels, lch_count, gchannels, gch_count); + silc_free(lchannels); + silc_free(gchannels); + out: silc_server_command_free(cmd); } @@ -4031,7 +4034,7 @@ SILC_SERVER_CMD_FUNC(cmode) silc_buffer_free(packet); silc_free(channel_id); - silc_free(cidp); + silc_buffer_free(cidp); out: silc_server_command_free(cmd); diff --git a/apps/silcd/idlist.c b/apps/silcd/idlist.c index 4dbe844d..fa084ec6 100644 --- a/apps/silcd/idlist.c +++ b/apps/silcd/idlist.c @@ -71,6 +71,8 @@ void silc_idlist_del_data(void *entry) silc_hmac_free(idata->hmac_send); if (idata->hmac_receive) silc_hmac_free(idata->hmac_receive); + if (idata->hash) + silc_hash_free(idata->hash); if (idata->public_key) silc_pkcs_public_key_free(idata->public_key); } @@ -361,6 +363,7 @@ int silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry) silc_free(entry->username); silc_free(entry->userinfo); silc_free(entry->id); + silc_hash_table_free(entry->channels); memset(entry, 'F', sizeof(*entry)); silc_free(entry); @@ -533,18 +536,13 @@ void silc_idlist_client_destructor(SilcIDCache cache, { SilcClientEntry client; - SILC_LOG_DEBUG(("Start")); - client = (SilcClientEntry)entry->context; if (client) { - if (client->nickname) - silc_free(client->nickname); - if (client->username) - silc_free(client->username); - if (client->userinfo) - silc_free(client->userinfo); - if (client->id) - silc_free(client->id); + silc_free(client->nickname); + silc_free(client->username); + silc_free(client->userinfo); + silc_free(client->id); + silc_hash_table_free(client->channels); memset(client, 'F', sizeof(*client)); silc_free(client); @@ -634,6 +632,8 @@ int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry) silc_free(entry->key); } silc_free(entry->cipher); + if (entry->hmac) + silc_hmac_free(entry->hmac); silc_free(entry->hmac_name); silc_free(entry->rekey); diff --git a/apps/silcd/packet_receive.c b/apps/silcd/packet_receive.c index 3b11de0f..f09bccb6 100644 --- a/apps/silcd/packet_receive.c +++ b/apps/silcd/packet_receive.c @@ -1444,6 +1444,7 @@ SilcClientEntry silc_server_new_client(SilcServer server, SilcClientID *client_id; SilcBuffer reply; SilcIDListData idata; + SilcIDCacheEntry id_cache = NULL; char *username = NULL, *realname = NULL, *id_string; uint32 id_len; int ret; @@ -1459,7 +1460,7 @@ SilcClientEntry silc_server_new_client(SilcServer server, client = (SilcClientEntry)sock->user_data; idata = (SilcIDListData)client; - /* Remove the old cache entry */ + /* Remove the old cache entry. */ if (!silc_idcache_del_by_context(server->local_list->clients, client)) { SILC_LOG_ERROR(("Lost client's cache entry - bad thing")); silc_server_disconnect_remote(server, sock, "Server closed connection: " @@ -2517,4 +2518,3 @@ void silc_server_ftp(SilcServer server, idata->hmac_send, idata->psn_send++, packet, FALSE); } - diff --git a/apps/silcd/packet_send.c b/apps/silcd/packet_send.c index 0956bdbd..3c71557c 100644 --- a/apps/silcd/packet_send.c +++ b/apps/silcd/packet_send.c @@ -1604,6 +1604,7 @@ void silc_server_send_notify_on_channels(SilcServer server, silc_free(routed); silc_free(sent_clients); silc_free(packetdata.src_id); + silc_buffer_free(packet); va_end(ap); } diff --git a/apps/silcd/protocol.c b/apps/silcd/protocol.c index 50caf240..5bf97101 100644 --- a/apps/silcd/protocol.c +++ b/apps/silcd/protocol.c @@ -1410,7 +1410,7 @@ SILC_TASK_CALLBACK(silc_server_protocol_rekey) ctx->ske = silc_ske_alloc(); ctx->ske->rng = server->rng; ctx->ske->prop = silc_calloc(1, sizeof(*ctx->ske->prop)); - silc_ske_get_group_by_number(idata->rekey->ske_group, + silc_ske_group_get_by_number(idata->rekey->ske_group, &ctx->ske->prop->group); silc_ske_set_callbacks(ctx->ske, @@ -1466,7 +1466,7 @@ SILC_TASK_CALLBACK(silc_server_protocol_rekey) ctx->ske = silc_ske_alloc(); ctx->ske->rng = server->rng; ctx->ske->prop = silc_calloc(1, sizeof(*ctx->ske->prop)); - silc_ske_get_group_by_number(idata->rekey->ske_group, + silc_ske_group_get_by_number(idata->rekey->ske_group, &ctx->ske->prop->group); silc_ske_set_callbacks(ctx->ske, diff --git a/apps/silcd/server.c b/apps/silcd/server.c index c831c158..86b0a3dc 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -111,7 +111,7 @@ void silc_server_free(SilcServer server) int silc_server_init(SilcServer server) { - int *sock = NULL, sock_count = 0, i; + int *sock = NULL, sock_count, i; SilcServerID *id; SilcServerEntry id_entry; SilcIDListPurge purge; @@ -181,6 +181,7 @@ int silc_server_init(SilcServer server) tmp = silc_net_create_server(server->config->listen_port->port, server->config->listen_port->listener_ip); + if (tmp < 0) { SILC_LOG_ERROR(("Could not create server listener: %s on %d", server->config->listen_port->listener_ip, @@ -188,7 +189,7 @@ int silc_server_init(SilcServer server) goto err0; } - sock = silc_realloc(sock, (sizeof(int *) * (sock_count + 1))); + sock = silc_realloc(sock, sizeof(*sock) * (sock_count + 1)); sock[sock_count] = tmp; sock_count++; listen = listen->next; diff --git a/lib/silcclient/protocol.c b/lib/silcclient/protocol.c index 40bffdf8..f70506e9 100644 --- a/lib/silcclient/protocol.c +++ b/lib/silcclient/protocol.c @@ -918,7 +918,7 @@ SILC_TASK_CALLBACK(silc_client_protocol_rekey) ctx->ske = silc_ske_alloc(); ctx->ske->rng = client->rng; ctx->ske->prop = silc_calloc(1, sizeof(*ctx->ske->prop)); - silc_ske_get_group_by_number(conn->rekey->ske_group, + silc_ske_group_get_by_number(conn->rekey->ske_group, &ctx->ske->prop->group); silc_ske_set_callbacks(ctx->ske, @@ -975,7 +975,7 @@ SILC_TASK_CALLBACK(silc_client_protocol_rekey) ctx->ske = silc_ske_alloc(); ctx->ske->rng = client->rng; ctx->ske->prop = silc_calloc(1, sizeof(*ctx->ske->prop)); - silc_ske_get_group_by_number(conn->rekey->ske_group, + silc_ske_group_get_by_number(conn->rekey->ske_group, &ctx->ske->prop->group); silc_ske_set_callbacks(ctx->ske, diff --git a/lib/silccore/silccommand.c b/lib/silccore/silccommand.c index ba029871..e1c2fc2b 100644 --- a/lib/silccore/silccommand.c +++ b/lib/silccore/silccommand.c @@ -130,7 +130,7 @@ SilcBuffer silc_command_payload_encode(SilcCommand cmd, SILC_STR_UI_XNSTRING(args->data, args->len), SILC_STR_END); silc_buffer_push(buffer, SILC_COMMAND_PAYLOAD_LEN); - silc_free(args); + silc_buffer_free(args); } return buffer; @@ -173,7 +173,7 @@ SilcBuffer silc_command_payload_encode_payload(SilcCommandPayload payload) SILC_STR_UI_XNSTRING(args->data, args->len), SILC_STR_END); silc_buffer_push(buffer, SILC_COMMAND_PAYLOAD_LEN); - silc_free(args); + silc_buffer_free(args); } return buffer; diff --git a/lib/silccore/silcidcache.c b/lib/silccore/silcidcache.c index b922beb7..c4b658e8 100644 --- a/lib/silccore/silcidcache.c +++ b/lib/silccore/silcidcache.c @@ -198,6 +198,8 @@ bool silc_idcache_del(SilcIDCache cache, SilcIDCacheEntry old) ret = silc_hash_table_del(cache->context_table, old->context); if (old->id) ret = silc_hash_table_del(cache->id_table, old->id); + else + silc_free(old); return ret; } @@ -263,6 +265,8 @@ bool silc_idcache_del_by_context(SilcIDCache cache, void *context) ret = silc_hash_table_del(cache->context_table, c->context); if (c->id) ret = silc_hash_table_del_by_context(cache->id_table, c->id, c); + else + silc_free(c); return ret; } diff --git a/lib/silccrypt/rsa.c b/lib/silccrypt/rsa.c index 66aea06a..ec47e6dd 100644 --- a/lib/silccrypt/rsa.c +++ b/lib/silccrypt/rsa.c @@ -220,6 +220,12 @@ SILC_PKCS_API_SET_PUBLIC_KEY(rsa) unsigned char tmp[4]; uint32 e_len, n_len; + if (key->pub_set) { + silc_mp_uninit(&key->e); + silc_mp_uninit(&key->e); + key->pub_set = FALSE; + } + silc_mp_init(&key->e); silc_mp_init(&key->n); @@ -244,6 +250,7 @@ SILC_PKCS_API_SET_PUBLIC_KEY(rsa) silc_mp_bin2mp(key_data + 4 + e_len + 4, n_len, &key->n); key->bits = n_len * 8; + key->pub_set = TRUE; return key->bits; } @@ -258,6 +265,17 @@ SILC_PKCS_API_SET_PRIVATE_KEY(rsa) unsigned char tmp[4]; uint32 e_len, n_len, d_len; + if (key->prv_set) { + silc_mp_uninit(&key->d); + key->prv_set = FALSE; + } + + if (key->pub_set) { + silc_mp_uninit(&key->e); + silc_mp_uninit(&key->n); + key->pub_set = FALSE; + } + silc_mp_init(&key->e); silc_mp_init(&key->n); silc_mp_init(&key->d); @@ -267,6 +285,7 @@ SILC_PKCS_API_SET_PRIVATE_KEY(rsa) if (e_len > key_len) { silc_mp_uninit(&key->e); silc_mp_uninit(&key->n); + silc_mp_uninit(&key->d); return FALSE; } @@ -277,6 +296,7 @@ SILC_PKCS_API_SET_PRIVATE_KEY(rsa) if (e_len + n_len > key_len) { silc_mp_uninit(&key->e); silc_mp_uninit(&key->n); + silc_mp_uninit(&key->d); return FALSE; } @@ -287,12 +307,15 @@ SILC_PKCS_API_SET_PRIVATE_KEY(rsa) if (e_len + n_len + d_len > key_len) { silc_mp_uninit(&key->e); silc_mp_uninit(&key->n); + silc_mp_uninit(&key->d); return FALSE; } silc_mp_bin2mp(key_data + 4 + e_len + 4 + n_len + 4, d_len, &key->d); key->bits = n_len * 8; + key->prv_set = TRUE; + key->pub_set = TRUE; return TRUE; } @@ -464,8 +487,6 @@ void rsa_generate_keys(RsaKey *key, uint32 bits, SilcMPInt pm1, qm1; /* Initialize variables */ - silc_mp_init(&key->p); - silc_mp_init(&key->q); silc_mp_init(&key->n); silc_mp_init(&key->e); silc_mp_init(&key->d); @@ -479,16 +500,12 @@ void rsa_generate_keys(RsaKey *key, uint32 bits, /* Set modulus length */ key->bits = bits; - /* Set the primes */ - silc_mp_set(&key->p, p); - silc_mp_set(&key->q, q); - /* Compute modulus, n = p * q */ - silc_mp_mul(&key->n, &key->p, &key->q); + silc_mp_mul(&key->n, p, q); /* phi = (p - 1) * (q - 1) */ - silc_mp_sub_ui(&pm1, &key->p, 1); - silc_mp_sub_ui(&qm1, &key->q, 1); + silc_mp_sub_ui(&pm1, p, 1); + silc_mp_sub_ui(&qm1, q, 1); silc_mp_mul(&phi, &pm1, &qm1); /* Set e, the public exponent. We try to use same public exponent @@ -522,11 +539,12 @@ void rsa_generate_keys(RsaKey *key, uint32 bits, void rsa_clear_keys(RsaKey *key) { key->bits = 0; - silc_mp_uninit(&key->p); - silc_mp_uninit(&key->q); - silc_mp_uninit(&key->n); - silc_mp_uninit(&key->e); - silc_mp_uninit(&key->d); + if (key->pub_set) { + silc_mp_uninit(&key->n); + silc_mp_uninit(&key->e); + } + if (key->prv_set) + silc_mp_uninit(&key->d); } /* RSA encrypt/decrypt function. cm = ciphertext or plaintext, diff --git a/lib/silccrypt/rsa_internal.h b/lib/silccrypt/rsa_internal.h index 33ffd88a..c4feb315 100644 --- a/lib/silccrypt/rsa_internal.h +++ b/lib/silccrypt/rsa_internal.h @@ -24,8 +24,8 @@ /* RSA Keys, includes both Private and Public key */ typedef struct { int bits; /* bits in key */ - SilcMPInt p; /* prime p */ - SilcMPInt q; /* prime q */ + char pub_set; /* TRUE is n and e is set */ + char prv_set; /* TRUE if d is set */ SilcMPInt n; /* modulus */ SilcMPInt e; /* public exponent */ SilcMPInt d; /* private exponent */ diff --git a/lib/silccrypt/silcpkcs.c b/lib/silccrypt/silcpkcs.c index 866662b3..d843428e 100644 --- a/lib/silccrypt/silcpkcs.c +++ b/lib/silccrypt/silcpkcs.c @@ -152,8 +152,10 @@ bool silc_pkcs_alloc(const unsigned char *name, SilcPKCS *new_pkcs) void silc_pkcs_free(SilcPKCS pkcs) { - if (pkcs) + if (pkcs) { + pkcs->pkcs->clear_keys(pkcs->context); silc_free(pkcs->context); + } silc_free(pkcs); } diff --git a/lib/silcsim/Makefile.am b/lib/silcsim/Makefile.am index 799c8591..ac9d278d 100644 --- a/lib/silcsim/Makefile.am +++ b/lib/silcsim/Makefile.am @@ -60,12 +60,12 @@ endif $(SIM_CIPHER_OBJS): ../silccrypt/libsilccrypt.a $(LTCOMPILE) -c $(srcdir)/../silccrypt/$*.c $(LIBTOOL) --mode=link $(LINK) -rpath $(silc_modulesdir) -o lib$*.la $*.lo - cd $(srcdir)/$(SIM_MODULES_DIR) && $(LN_S) $(srcdir)/../.libs/lib$*.so $(srcdir)/$*.sim.so + cd $(srcdir)/$(SIM_MODULES_DIR) && $(LN_S) -f $(srcdir)/../.libs/lib$*.so $(srcdir)/$*.sim.so $(SIM_HASH_OBJS): ../silccrypt/libsilccrypt.a $(LTCOMPILE) -c $(srcdir)/../silccrypt/$*.c $(LIBTOOL) --mode=link $(LINK) -rpath $(silc_modulesdir) -o lib$*.la $*.lo - cd $(srcdir)/$(SIM_MODULES_DIR) && $(LN_S) $(srcdir)/../.libs/lib$*.so $(srcdir)/$*.sim.so + cd $(srcdir)/$(SIM_MODULES_DIR) && $(LN_S) -f $(srcdir)/../.libs/lib$*.so $(srcdir)/$*.sim.so CLEANFILES = $(SIM_MODULES_DIR)/*.sim.so *.la diff --git a/lib/silcske/groups.c b/lib/silcske/groups.c index 0c83343d..c5a947e8 100644 --- a/lib/silcske/groups.c +++ b/lib/silcske/groups.c @@ -72,7 +72,7 @@ const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[] = /* Returns Diffie Hellman group by group number */ -SilcSKEStatus silc_ske_get_group_by_number(int number, +SilcSKEStatus silc_ske_group_get_by_number(int number, SilcSKEDiffieHellmanGroup *ret) { int i; @@ -106,7 +106,7 @@ SilcSKEStatus silc_ske_get_group_by_number(int number, /* Returns Diffie Hellman group by name */ -SilcSKEStatus silc_ske_get_group_by_name(const char *name, +SilcSKEStatus silc_ske_group_get_by_name(const char *name, SilcSKEDiffieHellmanGroup *ret) { int i; @@ -138,6 +138,16 @@ SilcSKEStatus silc_ske_get_group_by_name(const char *name, return SILC_SKE_STATUS_OK; } +/* Free group */ + +void silc_ske_group_free(SilcSKEDiffieHellmanGroup group) +{ + silc_mp_uninit(&group->group); + silc_mp_uninit(&group->group_order); + silc_mp_uninit(&group->generator); + silc_free(group); +} + /* Returns comma separated list of supported groups */ char *silc_ske_get_supported_groups() @@ -167,3 +177,10 @@ int silc_ske_group_get_number(SilcSKEDiffieHellmanGroup group) { return group->number; } + +/* Returns the name of the `group'. */ + +const char *silc_ske_group_get_name(SilcSKEDiffieHellmanGroup group) +{ + return group->name; +} diff --git a/lib/silcske/groups.h b/lib/silcske/groups.h index 1e36c5de..724bc3d5 100644 --- a/lib/silcske/groups.h +++ b/lib/silcske/groups.h @@ -18,23 +18,127 @@ */ +/****h* silcske/SilcSKEGroups + * + * DESCRIPTION + * + * This interface defines the Diffie Hellman group management and utility + * functions for the SKE. They can be used find DH groups by group number, + * and group name. These routines are used during the SKE session. + * + ***/ + #ifndef GROUPS_H #define GROUPS_H #include "silcske_status.h" -/* Forward declaration */ +/****s* silcske/SilcSKEGroups/SilcSKEDiffieHellmanGroup + * + * NAME + * + * typedef struct SilcSKEDiffieHellmanGroupStruct + * *SilcSKEDiffieHellmanGroup; + * + * DESCRIPTION + * + * This context represents one Diffie Hellman group, and is returned + * by the utility functions for finding correct groups. The context + * is freed by calling the silc_ske_group_free function. + * + ***/ typedef struct SilcSKEDiffieHellmanGroupStruct *SilcSKEDiffieHellmanGroup; -/* List of defined groups. */ -extern const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[]; - /* Prototypes */ -SilcSKEStatus silc_ske_get_group_by_number(int number, + +/****f* silcske/SilcSKEGroups/silc_ske_group_get_by_number + * + * SYNOPSIS + * + * SilcSKEStatus + * silc_ske_group_get_by_number(int number, + * SilcSKEDiffieHellmanGroup *ret); + * + * DESCRIPTION + * + * Returns the Diffie Hellman group into the `ret' pointer by + * group number indicated by the `number'. Returns error status + * if the group was not found. + * + ***/ +SilcSKEStatus silc_ske_group_get_by_number(int number, SilcSKEDiffieHellmanGroup *ret); -SilcSKEStatus silc_ske_get_group_by_name(const char *name, + +/****f* silcske/SilcSKEGroups/silc_ske_group_get_by_name + * + * SYNOPSIS + * + * SilcSKEStatus + * silc_ske_get_group_by_name(const char *name, + * SilcSKEDiffieHellmanGroup *ret); + * + * DESCRIPTION + * + * Returns the Diffie Hellman group into the `ret' pointer by + * group name indicated by the `name'. Returns error status + * if the group was not found. + * + ***/ +SilcSKEStatus silc_ske_group_get_by_name(const char *name, SilcSKEDiffieHellmanGroup *ret); + +/****f* silcske/SilcSKEGroups/silc_ske_group_free + * + * SYNOPSIS + * + * void silc_ske_group_free(SilcSKEDiffieHellmanGroup group); + * + * DESCRIPTION + * + * Free the Diffie Hellman group indicated by the `group'. + * + ***/ +void silc_ske_group_free(SilcSKEDiffieHellmanGroup group); + +/****f* silcske/SilcSKEGroups/silc_ske_get_supported_groups + * + * SYNOPSIS + * + * char *silc_ske_get_supported_groups(); + * + * DESCRIPTION + * + * Returns a comma separated list of support Diffie Hellman groups. + * This can be used to get the list of supported groups for SKE + * packets. + * + ***/ char *silc_ske_get_supported_groups(); + +/****f* silcske/SilcSKEGroups/silc_ske_group_get_number + * + * SYNOPSIS + * + * int silc_ske_group_get_number(SilcSKEDiffieHellmanGroup group); + * + * DESCRIPTION + * + * Return the group number of the group indicated by the `group'. + * + ***/ int silc_ske_group_get_number(SilcSKEDiffieHellmanGroup group); +/****f* silcske/SilcSKEGroups/silc_ske_group_get_name + * + * SYNOPSIS + * + * const char *silc_ske_group_get_name(SilcSKEDiffieHellmanGroup group); + * + * DESCRIPTION + * + * Return the group name of the group indicated by the `group'. + * + ***/ +const char *silc_ske_group_get_name(SilcSKEDiffieHellmanGroup group); + #endif diff --git a/lib/silcske/groups_internal.h b/lib/silcske/groups_internal.h index ab2787b4..eb627583 100644 --- a/lib/silcske/groups_internal.h +++ b/lib/silcske/groups_internal.h @@ -39,4 +39,7 @@ struct SilcSKEDiffieHellmanGroupStruct { SilcMPInt generator; }; +/* List of defined groups. */ +extern const struct SilcSKEDiffieHellmanGroupDefStruct silc_ske_groups[]; + #endif diff --git a/lib/silcske/silcske.c b/lib/silcske/silcske.c index 612abd81..c3c14297 100644 --- a/lib/silcske/silcske.c +++ b/lib/silcske/silcske.c @@ -72,7 +72,8 @@ void silc_ske_free(SilcSKE ske) /* Free rest */ if (ske->prop) { - silc_free(ske->prop->group); + if (ske->prop->group) + silc_ske_group_free(ske->prop->group); if (ske->prop->pkcs) silc_pkcs_free(ske->prop->pkcs); if (ske->prop->cipher) @@ -249,7 +250,7 @@ SilcSKEStatus silc_ske_initiator_phase_1(SilcSKE ske, the callback function. */ ske->prop = prop = silc_calloc(1, sizeof(*prop)); prop->flags = payload->flags; - status = silc_ske_get_group_by_name(payload->ke_grp_list, &group); + status = silc_ske_group_get_by_name(payload->ke_grp_list, &group); if (status != SILC_SKE_STATUS_OK) goto err; @@ -288,7 +289,7 @@ SilcSKEStatus silc_ske_initiator_phase_1(SilcSKE ske, if (payload) silc_ske_payload_start_free(payload); - silc_free(group); + silc_ske_group_free(group); if (prop->pkcs) silc_pkcs_free(prop->pkcs); @@ -695,7 +696,7 @@ SilcSKEStatus silc_ske_responder_phase_1(SilcSKE ske, only for this negotiation and will be free'd after KE is over. */ ske->prop = prop = silc_calloc(1, sizeof(*prop)); prop->flags = start_payload->flags; - status = silc_ske_get_group_by_name(start_payload->ke_grp_list, &group); + status = silc_ske_group_get_by_name(start_payload->ke_grp_list, &group); if (status != SILC_SKE_STATUS_OK) goto err; @@ -741,7 +742,7 @@ SilcSKEStatus silc_ske_responder_phase_1(SilcSKE ske, err: if (group) - silc_free(group); + silc_ske_group_free(group); if (prop->pkcs) silc_pkcs_free(prop->pkcs); @@ -1217,7 +1218,7 @@ silc_ske_select_security_properties(SilcSKE ske, SILC_LOG_DEBUG(("Proposed KE group `%s'", item)); - if (silc_ske_get_group_by_name(item, NULL) == SILC_SKE_STATUS_OK) { + if (silc_ske_group_get_by_name(item, NULL) == SILC_SKE_STATUS_OK) { SILC_LOG_DEBUG(("Found KE group `%s'", item)); payload->ke_grp_len = len; -- 2.24.0