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. 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[]) exit(1); } } else if ((ret = krb5_cc_default(context, &ccache)) != KRB5_CC_NOTFOUND) { + princ = NULL; + if (ret) { com_err(argv[0], ret, "opening default ccache"); - exit(1); } + else if ((ret = krb5_cc_get_principal(context, ccache, &princ))) { com_err(argv[0], ret, "getting principal from ccache"); - exit(1); } + else if ((ret = krb5_cc_close(context, ccache))) { com_err(argv[0], ret, "closing ccache"); - exit(1); } - } else { + } + if (princ == NULL) { get_name_from_passwd_file(argv[0], context, &princ); }