diff options
author | Tom Yu <tlyu@mit.edu> | 1997-03-17 02:22:52 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 1997-03-17 02:22:52 +0000 |
commit | 74aea346f83e259a55e95fc8e3dd92420de8dacc (patch) | |
tree | b56741d5312241b67cc388050d82cbea630f5f8a /src/lib/kdb/keytab.c | |
parent | 6f725cfeed717bdfb8b13050c9cacc4e8f001344 (diff) | |
download | krb5-74aea346f83e259a55e95fc8e3dd92420de8dacc.tar.gz krb5-74aea346f83e259a55e95fc8e3dd92420de8dacc.tar.xz krb5-74aea346f83e259a55e95fc8e3dd92420de8dacc.zip |
* keytab.c: Don't assume dbm_db_get_mkey() and dbe_find_enctype
won't error out. Also, some gcc -Wall warning
cleanups. [krb5-kdc/361]
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10004 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb/keytab.c')
-rw-r--r-- | src/lib/kdb/keytab.c | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/lib/kdb/keytab.c b/src/lib/kdb/keytab.c index c32b74217..82ed08e33 100644 --- a/src/lib/kdb/keytab.c +++ b/src/lib/kdb/keytab.c @@ -110,35 +110,44 @@ krb5_ktkdb_get_entry(context, id, principal, kvno, enctype, entry) /* Open database */ /* krb5_dbm_db_init(context); */ - if (kerror = krb5_dbm_db_open_database(context)) + if ((kerror = krb5_dbm_db_open_database(context))) return(kerror); /* get_principal */ - if (kerror = krb5_dbm_db_get_principal(context, principal, &db_entry, - &n, &more)) { + kerror = krb5_dbm_db_get_principal(context, principal, & + db_entry, &n, &more); + if (kerror) { krb5_dbm_db_close_database(context); return(kerror); } - - if (n != 1) - { + if (n != 1) { krb5_dbm_db_close_database(context); return KRB5_KT_NOTFOUND; - } + } + /* match key */ - krb5_dbm_db_get_mkey(context, id->ops, &master_key); - krb5_dbe_find_enctype(context, &db_entry, enctype, -1, kvno, &key_data); - if (kerror = krb5_dbekd_decrypt_key_data(context, master_key, key_data, - &entry->key, NULL)) + /* WTF??? 2nd arg to dbm_db_get_mkey appears to be unused! -tlyu */ + kerror = krb5_dbm_db_get_mkey(context, id->ops, &master_key); + if (kerror) + goto error; + + kerror = krb5_dbe_find_enctype(context, &db_entry, + enctype, -1, kvno, &key_data); + if (kerror) + goto error; + + kerror = krb5_dbekd_decrypt_key_data(context, master_key, + key_data, &entry->key, NULL); + if (kerror) goto error; - if (kerror = krb5_copy_principal(context, principal, &entry->principal)) + kerror = krb5_copy_principal(context, principal, &entry->principal); + if (kerror) goto error; /* Close database */ -error:; + error: krb5_dbe_free_contents(context, &db_entry); krb5_dbm_db_close_database(context); return(kerror); } - |