(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
This commit is contained in:
@@ -610,24 +610,20 @@ AES_string_to_key(krb5_context context,
|
|||||||
if (et == NULL)
|
if (et == NULL)
|
||||||
return KRB5_PROG_KEYTYPE_NOSUPP;
|
return KRB5_PROG_KEYTYPE_NOSUPP;
|
||||||
|
|
||||||
key->keytype = enctype;
|
kd.schedule = NULL;
|
||||||
ret = krb5_data_alloc(&key->keyvalue, et->keytype->size);
|
kd.key->keytype = enctype;
|
||||||
|
ret = krb5_data_alloc(&kd.key->keyvalue, et->keytype->size);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
krb5_set_error_string(context, "Failed to allocate pkcs5 key");
|
krb5_set_error_string(context, "Failed to allocate pkcs5 key");
|
||||||
return ret;
|
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,
|
ret = PKCS5_PBKDF2_HMAC_SHA1(password.data, password.length,
|
||||||
salt.saltvalue.data, salt.saltvalue.length,
|
salt.saltvalue.data, salt.saltvalue.length,
|
||||||
iter,
|
iter,
|
||||||
et->keytype->size, kd.key->keyvalue.data);
|
et->keytype->size, kd.key->keyvalue.data);
|
||||||
kd.schedule = NULL;
|
|
||||||
if (ret != 1) {
|
if (ret != 1) {
|
||||||
|
free_key_data(context, &kd);
|
||||||
krb5_set_error_string(context, "Error calculating s2k");
|
krb5_set_error_string(context, "Error calculating s2k");
|
||||||
return KRB5_PROG_KEYTYPE_NOSUPP;
|
return KRB5_PROG_KEYTYPE_NOSUPP;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user