diff --git a/krb5-1.8-kpasswd_ccache.patch b/krb5-1.8-kpasswd_ccache.patch index 4e107f8..6dc8ce6 100644 --- a/krb5-1.8-kpasswd_ccache.patch +++ b/krb5-1.8-kpasswd_ccache.patch @@ -1,34 +1,50 @@ If we encounter any errors reading the user's principal name from the default ccache, fall back to the default of using the current user's name. RT#6683 -diff -up krb5-1.8/src/clients/kpasswd/kpasswd.c.kpasswd-ccache krb5-1.8/src/clients/kpasswd/kpasswd.c ---- krb5-1.8/src/clients/kpasswd/kpasswd.c.kpasswd-ccache 2009-10-30 20:48:38.000000000 -0400 -+++ krb5-1.8/src/clients/kpasswd/kpasswd.c 2010-03-05 11:04:42.000000000 -0500 -@@ -85,21 +85,23 @@ int main(int argc, char *argv[]) +Index: src/clients/kpasswd/kpasswd.c +=================================================================== +--- src/clients/kpasswd/kpasswd.c (revision 23818) ++++ src/clients/kpasswd/kpasswd.c (revision 23819) +@@ -47,7 +47,7 @@ + { + krb5_error_code ret; + krb5_context context; +- krb5_principal princ; ++ krb5_principal princ = NULL; + char *pname; + krb5_ccache ccache; + krb5_get_init_creds_opt *opts = NULL; +@@ -84,23 +84,27 @@ + com_err(argv[0], ret, "parsing client name"); exit(1); } - } else if ((ret = krb5_cc_default(context, &ccache)) != KRB5_CC_NOTFOUND) { -+ princ = NULL; -+ - if (ret) { +- } else if ((ret = krb5_cc_default(context, &ccache)) != KRB5_CC_NOTFOUND) { +- if (ret) { ++ } else { ++ ret = krb5_cc_default(context, &ccache); ++ if (ret != 0) { com_err(argv[0], ret, "opening default ccache"); -- exit(1); + exit(1); } -+ else - if ((ret = krb5_cc_get_principal(context, ccache, &princ))) { +- if ((ret = krb5_cc_get_principal(context, ccache, &princ))) { ++ ret = krb5_cc_get_principal(context, ccache, &princ); ++ if (ret != 0 && ret != KRB5_CC_NOTFOUND && ret != KRB5_FCC_NOFILE) { com_err(argv[0], ret, "getting principal from ccache"); -- exit(1); + exit(1); } -+ else - if ((ret = krb5_cc_close(context, ccache))) { +- if ((ret = krb5_cc_close(context, ccache))) { ++ ret = krb5_cc_close(context, ccache); ++ if (ret != 0) { com_err(argv[0], ret, "closing ccache"); -- exit(1); + exit(1); } - } else { -+ } -+ if (princ == NULL) { - get_name_from_passwd_file(argv[0], context, &princ); +- get_name_from_passwd_file(argv[0], context, &princ); ++ ++ if (princ == NULL) ++ get_name_from_passwd_file(argv[0], context, &princ); } + if ((ret = krb5_get_init_creds_opt_alloc(context, &opts))) {