diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/krb5/keytab/file/ChangeLog | 4 | ||||
| -rw-r--r-- | src/lib/krb5/keytab/file/ktf_get_en.c | 9 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/krb5/keytab/file/ChangeLog b/src/lib/krb5/keytab/file/ChangeLog index 2d60a6200..b6bb32ff6 100644 --- a/src/lib/krb5/keytab/file/ChangeLog +++ b/src/lib/krb5/keytab/file/ChangeLog @@ -1,5 +1,9 @@ Tue Oct 4 16:20:48 1994 Theodore Y. Ts'o (tytso@dcl) + * ktf_get_en.c (krb5_ktfile_get_entry): Fix to compare using + new_entry instead of cur_entry. (Bug made in modification + on Sep 28th). Don't free cur_entry twice on errors. + * ktfile.h * ktf_wreslv.c (krb5_ktfile_wresolve): * ktf_resolv.c (krb5_ktf_resolv): Resolv's first argument is now a diff --git a/src/lib/krb5/keytab/file/ktf_get_en.c b/src/lib/krb5/keytab/file/ktf_get_en.c index 2660a455f..a1c18fc10 100644 --- a/src/lib/krb5/keytab/file/ktf_get_en.c +++ b/src/lib/krb5/keytab/file/ktf_get_en.c @@ -54,11 +54,13 @@ OLDDECLARG(krb5_keytab_entry *, entry) * is exited with a break statement. */ cur_entry.principal = 0; + cur_entry.vno = 0; + cur_entry.key.contents = 0; while (TRUE) { if (kerror = krb5_ktfileint_read_entry(id, &new_entry)) break; - if (krb5_principal_compare(principal, cur_entry.principal)) { + if (krb5_principal_compare(principal, new_entry.principal)) { if (kvno == IGNORE_VNO) { if (cur_entry.vno < new_entry.vno) { krb5_kt_free_entry(&cur_entry); @@ -76,14 +78,11 @@ OLDDECLARG(krb5_keytab_entry *, entry) if (kerror == KRB5_KT_END) kerror = KRB5_KT_NOTFOUND; (void) krb5_ktfileint_close(id); - if (cur_entry.principal) - krb5_kt_free_entry(&cur_entry); + krb5_kt_free_entry(&cur_entry); return kerror; } if ((kerror = krb5_ktfileint_close(id)) != 0) { krb5_kt_free_entry(&cur_entry); - if (cur_entry.principal) - krb5_kt_free_entry(&cur_entry); return kerror; } *entry = cur_entry; |
