Fix segfault in hdb-mitdb when princ have salt

This commit is contained in:
Nicolas Williams
2011-10-02 23:07:34 -05:00
parent ee7340860a
commit 3d6f86af27

View File

@@ -128,10 +128,10 @@ mdb_principal2key(krb5_context context,
#define KRB5_KDB_SALTTYPE_CERTHASH 6 #define KRB5_KDB_SALTTYPE_CERTHASH 6
static krb5_error_code static krb5_error_code
fix_salt(krb5_context context, hdb_entry *ent, int key_num) fix_salt(krb5_context context, hdb_entry *ent, Key *k)
{ {
krb5_error_code ret; krb5_error_code ret;
Salt *salt = ent->keys.val[key_num].salt; Salt *salt = k->salt;
/* fix salt type */ /* fix salt type */
switch((int)salt->type) { switch((int)salt->type) {
case KRB5_KDB_SALTTYPE_NORMAL: case KRB5_KDB_SALTTYPE_NORMAL:
@@ -187,8 +187,8 @@ fix_salt(krb5_context context, hdb_entry *ent, int key_num)
break; break;
case KRB5_KDB_SALTTYPE_CERTHASH: case KRB5_KDB_SALTTYPE_CERTHASH:
krb5_data_free(&salt->salt); krb5_data_free(&salt->salt);
free(ent->keys.val[key_num].salt); free(k->salt);
ent->keys.val[key_num].salt = NULL; k->salt = NULL;
break; break;
default: default:
abort(); abort();
@@ -263,7 +263,7 @@ mdb_keyvalue2key(krb5_context context, hdb_entry *entry, krb5_storage *sp, uint1
k->salt->salt.length = u16; k->salt->salt.length = u16;
krb5_storage_read(sp, k->salt->salt.data, k->salt->salt.length); krb5_storage_read(sp, k->salt->salt.data, k->salt->salt.length);
} }
fix_salt(context, entry, entry->keys.len - 1); fix_salt(context, entry, k);
} else { } else {
/* /*
* Whatever this "version" might be, we skip it * Whatever this "version" might be, we skip it