diff options
author | NeilBrown <neilb@suse.de> | 2013-07-02 08:27:41 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2013-07-02 08:27:41 -0400 |
commit | 05e6d39a988e76d5803f79018a9e40d435f6d2f7 (patch) | |
tree | 544bee73380a46280237163b25563c9476a7dbfc | |
parent | 94642a397d27ea0cfc6d798bc505482023eb5ec1 (diff) | |
download | nfs-utils-05e6d39a988e76d5803f79018a9e40d435f6d2f7.tar.gz nfs-utils-05e6d39a988e76d5803f79018a9e40d435f6d2f7.tar.xz nfs-utils-05e6d39a988e76d5803f79018a9e40d435f6d2f7.zip |
gssd: don't give up on machine credential if hostname not available.
krb5_util tries various different credential names in order to find
the machine credential, not all of them use the full host name of the
current host.
So if getting the full host name fails, don't give up completely,
still try the other options.
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | utils/gssd/krb5_util.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c index abebdcd..a6c7eb0 100644 --- a/utils/gssd/krb5_util.c +++ b/utils/gssd/krb5_util.c @@ -825,8 +825,10 @@ find_keytab_entry(krb5_context context, krb5_keytab kt, const char *tgtname, myhostad[i+1] = 0; retval = get_full_hostname(myhostname, myhostname, sizeof(myhostname)); - if (retval) - goto out; + if (retval) { + /* Don't use myhostname */ + myhostname[0] = 0; + } code = krb5_get_default_realm(context, &default_realm); if (code) { @@ -891,6 +893,8 @@ find_keytab_entry(krb5_context context, krb5_keytab kt, const char *tgtname, myhostad, NULL); } else { + if (!myhostname[0]) + continue; snprintf(spn, sizeof(spn), "%s/%s@%s", svcnames[j], myhostname, realm); code = krb5_build_principal_ext(context, &princ, |