From: Pekka Riikonen Date: Mon, 3 Feb 2003 13:38:26 +0000 (+0000) Subject: Check for silc_hmac_alloc return value. X-Git-Tag: silc.client.0.9.12~22 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=cea0940b86acf052d5fa0737bc86a0f3553c5fa5 Check for silc_hmac_alloc return value. --- diff --git a/apps/silcd/server.c b/apps/silcd/server.c index 59e6c439..0c55b28d 100644 --- a/apps/silcd/server.c +++ b/apps/silcd/server.c @@ -3855,7 +3855,12 @@ bool silc_server_create_channel_key(SilcServer server, /* Generate HMAC key from the channel key data and set it */ if (!channel->hmac) - silc_hmac_alloc(SILC_DEFAULT_HMAC, NULL, &channel->hmac); + if (!silc_hmac_alloc(SILC_DEFAULT_HMAC, NULL, &channel->hmac)) { + memset(channel->key, 0, channel->key_len / 8); + silc_free(channel->key); + channel->channel_key = NULL; + return FALSE; + } silc_hash_make(silc_hmac_get_hash(channel->hmac), channel->key, len, hash); silc_hmac_set_key(channel->hmac, hash, silc_hash_len(silc_hmac_get_hash(channel->hmac))); @@ -3966,7 +3971,12 @@ SilcChannelEntry silc_server_save_channel_key(SilcServer server, /* Generate HMAC key from the channel key data and set it */ if (!channel->hmac) - silc_hmac_alloc(SILC_DEFAULT_HMAC, NULL, &channel->hmac); + if (!silc_hmac_alloc(SILC_DEFAULT_HMAC, NULL, &channel->hmac)) { + memset(channel->key, 0, channel->key_len / 8); + silc_free(channel->key); + channel->channel_key = NULL; + return FALSE; + } silc_hash_make(silc_hmac_get_hash(channel->hmac), tmp, tmp_len, hash); silc_hmac_set_key(channel->hmac, hash, silc_hash_len(silc_hmac_get_hash(channel->hmac)));