summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-07-02 08:27:41 -0400
committerSteve Dickson <steved@redhat.com>2013-07-02 08:27:41 -0400
commit05e6d39a988e76d5803f79018a9e40d435f6d2f7 (patch)
tree544bee73380a46280237163b25563c9476a7dbfc
parent94642a397d27ea0cfc6d798bc505482023eb5ec1 (diff)
downloadnfs-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.c8
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,