diff options
| author | Theodore Tso <tytso@mit.edu> | 1994-09-15 04:22:13 +0000 |
|---|---|---|
| committer | Theodore Tso <tytso@mit.edu> | 1994-09-15 04:22:13 +0000 |
| commit | 261f3efe59a66483e5b4110b7d745ee74302588b (patch) | |
| tree | 3940a702089cb13b39d3a5f582b50afccae2cc3e /src/kadmin/server/adm_server.c | |
| parent | dec11ffac772c31a257bf94e43c2df527c3df33e (diff) | |
Fix a number of pointer aliasing bugs
Make sure the master key version number is propgated correctly for new keys.
Fixed bug where process_client tried to free an automatic variable.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4237 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/server/adm_server.c')
| -rw-r--r-- | src/kadmin/server/adm_server.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/kadmin/server/adm_server.c b/src/kadmin/server/adm_server.c index 01b91c05f3..a408331ffa 100644 --- a/src/kadmin/server/adm_server.c +++ b/src/kadmin/server/adm_server.c @@ -73,6 +73,8 @@ global_client_server_info client_server_info; int classification; /* default = Unclassified */ #endif +krb5_db_entry master_entry; + krb5_flags NEW_ATTRIBUTES; cleanexit(val) @@ -287,7 +289,24 @@ krb5_keyblock *masterkeyblock; (void) krb5_db_fini(); return(retval); } - + +/* + * fetch the master database entry, and hold on to it. + */ + number_of_entries = 1; + if (retval = krb5_db_get_principal(masterkeyname, &master_entry, + &number_of_entries, &more)) { + return(retval); + } + if (number_of_entries != 1) { + if (number_of_entries) + krb5_db_free_principal(&master_entry, number_of_entries); + return(KRB5_KDB_NOMASTERKEY); + } else if (more) { + krb5_db_free_principal(&master_entry, number_of_entries); + return(KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE); + } + /* fetch the TGS key, and hold onto it; this is an efficiency hack the master key name here is from the master_princ global, |
