summaryrefslogtreecommitdiffstats
path: root/utils/gssd/krb5_util.c
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 /utils/gssd/krb5_util.c
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>
Diffstat (limited to 'utils/gssd/krb5_util.c')
-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,