aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2017-07-18 12:29:12 -0400
committerGreg Hudson <ghudson@mit.edu>2017-09-22 11:39:56 -0400
commit615506789cc7299e4e7b859d163f680228f1b724 (patch)
treec0b3a435b8a85b8203791797c283d34eb9f944e1
parentb2b06faaf391498da35e014dcfccb0c0792eb116 (diff)
downloadkrb5-615506789cc7299e4e7b859d163f680228f1b724.zip
krb5-615506789cc7299e4e7b859d163f680228f1b724.tar.gz
krb5-615506789cc7299e4e7b859d163f680228f1b724.tar.bz2
Prevent null dereference with keyboard master key
If krb5_db_fetch_mkey() prompts for a master key and needs to determine the kvno, check that the master entry contains any key data before dereferencing the first element. Reported by Joshua Schaeffer. (cherry picked from commit 29c504504f0c56c861d968ba2498590bf34714cd) ticket: 8600 version_fixed: 1.15.2
-rw-r--r--src/lib/kdb/kdb5.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c
index 4adf0fc..6907257 100644
--- a/src/lib/kdb/kdb5.c
+++ b/src/lib/kdb/kdb5.c
@@ -1220,11 +1220,12 @@ krb5_db_fetch_mkey(krb5_context context, krb5_principal mname,
krb5_db_entry *master_entry;
rc = krb5_db_get_principal(context, mname, 0, &master_entry);
- if (rc == 0) {
+ if (rc == 0 && master_entry->n_key_data > 0)
*kvno = (krb5_kvno) master_entry->key_data->key_data_kvno;
- krb5_db_free_principal(context, master_entry);
- } else
+ else
*kvno = 1;
+ if (rc == 0)
+ krb5_db_free_principal(context, master_entry);
}
if (!salt)