From ac32e3d909b645bcb3a1cac5a87f45c3de6390ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 22 Oct 2006 06:50:02 +0000 Subject: [PATCH] (AES_string_to_key): Try to not leak memory. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18804 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/crypto.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/krb5/crypto.c b/lib/krb5/crypto.c index e8fed63e8..dc30f4eaa 100644 --- a/lib/krb5/crypto.c +++ b/lib/krb5/crypto.c @@ -610,24 +610,20 @@ AES_string_to_key(krb5_context context, if (et == NULL) return KRB5_PROG_KEYTYPE_NOSUPP; - key->keytype = enctype; - ret = krb5_data_alloc(&key->keyvalue, et->keytype->size); + kd.schedule = NULL; + kd.key->keytype = enctype; + ret = krb5_data_alloc(&kd.key->keyvalue, et->keytype->size); if (ret) { krb5_set_error_string(context, "Failed to allocate pkcs5 key"); return ret; } - ret = krb5_copy_keyblock(context, key, &kd.key); - if (ret) { - krb5_free_keyblock(context, key); - return ret; - } ret = PKCS5_PBKDF2_HMAC_SHA1(password.data, password.length, salt.saltvalue.data, salt.saltvalue.length, iter, et->keytype->size, kd.key->keyvalue.data); - kd.schedule = NULL; if (ret != 1) { + free_key_data(context, &kd); krb5_set_error_string(context, "Error calculating s2k"); return KRB5_PROG_KEYTYPE_NOSUPP; }