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:40:05 -0400
commit763a884a0186a95134acc1afe26b8647a2ee1ee3 (patch)
tree5da0e0c1cd32f57896210242015632363095e978
parentf1190a43fb6de5b70a11cd6ec97978e05b6083f1 (diff)
downloadkrb5-763a884a0186a95134acc1afe26b8647a2ee1ee3.zip
krb5-763a884a0186a95134acc1afe26b8647a2ee1ee3.tar.gz
krb5-763a884a0186a95134acc1afe26b8647a2ee1ee3.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.14.6
-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 b85af5a..3d5d919 100644
--- a/src/lib/kdb/kdb5.c
+++ b/src/lib/kdb/kdb5.c
@@ -1092,11 +1092,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)