diff options
author | Theodore Tso <tytso@mit.edu> | 1995-08-07 23:20:23 +0000 |
---|---|---|
committer | Theodore Tso <tytso@mit.edu> | 1995-08-07 23:20:23 +0000 |
commit | 8e7041782c3e711b8f40fb99f4422f6764ca4a1f (patch) | |
tree | 6a9c208337f4d11f0d481ada37f6cf152129e037 /src/lib/krb5 | |
parent | 385f5c1508ed402881341350a40d567df30173c8 (diff) | |
download | krb5-8e7041782c3e711b8f40fb99f4422f6764ca4a1f.tar.gz krb5-8e7041782c3e711b8f40fb99f4422f6764ca4a1f.tar.xz krb5-8e7041782c3e711b8f40fb99f4422f6764ca4a1f.zip |
If there is an error looking up the key, make sure the keytab is
closed as part of the cleanup.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6445 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5')
-rw-r--r-- | src/lib/krb5/krb/ChangeLog | 6 | ||||
-rw-r--r-- | src/lib/krb5/krb/in_tkt_ktb.c | 15 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog index e40af558e..a74b6eb35 100644 --- a/src/lib/krb5/krb/ChangeLog +++ b/src/lib/krb5/krb/ChangeLog @@ -1,3 +1,9 @@ +Mon Aug 7 18:54:35 1995 Theodore Y. Ts'o <tytso@dcl> + + * in_tkt_ktb.c (keytab_keyproc): If there is an error looking up + the key, make sure the keytab is closed as part of the + cleanup. + Fri Aug 4 22:04:08 1995 Tom Yu <tlyu@dragons-lair.MIT.EDU> * conv_princ.c: Add braces to initializer to shut up gcc -Wall diff --git a/src/lib/krb5/krb/in_tkt_ktb.c b/src/lib/krb5/krb/in_tkt_ktb.c index 9cf295e83..2a96b1160 100644 --- a/src/lib/krb5/krb/in_tkt_ktb.c +++ b/src/lib/krb5/krb/in_tkt_ktb.c @@ -54,7 +54,7 @@ keytab_keyproc(context, type, salt, keyseed, key) { struct keytab_keyproc_arg * arg = (struct keytab_keyproc_arg *)keyseed; krb5_keyblock *realkey; - krb5_error_code retval; + krb5_error_code retval = 0; krb5_keytab kt_id; krb5_keytab_entry kt_ent; @@ -72,24 +72,27 @@ keytab_keyproc(context, type, salt, keyseed, key) if ((retval = krb5_kt_get_entry(context, kt_id, arg->client, 0, /* don't have vno available */ type, &kt_ent))) - return retval; + goto cleanup; if ((retval = krb5_copy_keyblock(context, &kt_ent.key, &realkey))) { (void) krb5_kt_free_entry(context, &kt_ent); - return retval; + goto cleanup; } if (realkey->keytype != type) { (void) krb5_kt_free_entry(context, &kt_ent); krb5_free_keyblock(context, realkey); - return KRB5_PROG_ETYPE_NOSUPP; + retval = KRB5_PROG_ETYPE_NOSUPP; + goto cleanup; } (void) krb5_kt_free_entry(context, &kt_ent); + *key = realkey; + +cleanup: if (arg->keytab) krb5_kt_close(context, kt_id); - *key = realkey; - return 0; + return retval; } /* |