diff options
author | Tom Yu <tlyu@mit.edu> | 2010-03-23 01:58:15 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2010-03-23 01:58:15 +0000 |
commit | c0a71892c7c7a663722401c02d345081c98c1c30 (patch) | |
tree | 1ed1d276827999e3992324a67fd6725ce9d392e6 | |
parent | faf1d49929ff39c32e50ceabdce69bbebfc23652 (diff) | |
download | krb5-c0a71892c7c7a663722401c02d345081c98c1c30.zip krb5-c0a71892c7c7a663722401c02d345081c98c1c30.tar.gz krb5-c0a71892c7c7a663722401c02d345081c98c1c30.tar.bz2 |
pull up r23819 from trunk
------------------------------------------------------------------------
r23819 | ghudson | 2010-03-18 10:37:31 -0700 (Thu, 18 Mar 2010) | 7 lines
ticket: 6683
target_version: 1.8.1
tags: pullup
Fix the kpasswd fallback from the ccache principal name to the
username in the case where the ccache doesn't exist.
ticket: 6683
version_fixed: 1.8.1
status: resolved
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-8@23826 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/clients/kpasswd/kpasswd.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/clients/kpasswd/kpasswd.c b/src/clients/kpasswd/kpasswd.c index 6bc0668..c79f2c8 100644 --- a/src/clients/kpasswd/kpasswd.c +++ b/src/clients/kpasswd/kpasswd.c @@ -47,7 +47,7 @@ int main(int argc, char *argv[]) { 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 @@ int main(int argc, char *argv[]) com_err(argv[0], ret, "parsing client name"); exit(1); } - } 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); } - 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); } - 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); } - } else { - 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))) { |