diff options
author | Greg Hudson <ghudson@mit.edu> | 2017-07-18 12:29:12 -0400 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2017-09-22 11:40:05 -0400 |
commit | 763a884a0186a95134acc1afe26b8647a2ee1ee3 (patch) | |
tree | 5da0e0c1cd32f57896210242015632363095e978 | |
parent | f1190a43fb6de5b70a11cd6ec97978e05b6083f1 (diff) | |
download | krb5-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.c | 7 |
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) |