Fix segfault in hdb-mitdb when princ have salt
This commit is contained in:
@@ -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
|
||||||
|
Reference in New Issue
Block a user