summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2015-07-03 22:11:07 +0000
committerrmacklem <rmacklem@FreeBSD.org>2015-07-03 22:11:07 +0000
commit5ebe352487469af039425cf102dcbbc762f8ded4 (patch)
tree0691d91dad6b9a9ae70a5618e3be1f4489b48b87 /sys/fs
parent9854b22dd7482bdaf98ccec1864fd0276dc420a6 (diff)
downloadFreeBSD-src-5ebe352487469af039425cf102dcbbc762f8ded4.zip
FreeBSD-src-5ebe352487469af039425cf102dcbbc762f8ded4.tar.gz
If a "principal" argument isn't provided for a Kerberized NFS mount,
the kernel would generate a bogus one with a ":/<path>" suffix. This would only occur for the case where there was no explicit "principal" argument and the getaddrinfo() call in mount_nfs.c failed to a return a cannonical name for the server. This patch fixes this unusual case. PR: 201073 Submitted by: masato@itc.naist.jp MFC after: 2 weeks
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsclient/nfs_clvfsops.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/fs/nfsclient/nfs_clvfsops.c b/sys/fs/nfsclient/nfs_clvfsops.c
index 73c6eb6..b165b96 100644
--- a/sys/fs/nfsclient/nfs_clvfsops.c
+++ b/sys/fs/nfsclient/nfs_clvfsops.c
@@ -779,7 +779,7 @@ nfs_mount(struct mount *mp)
struct thread *td;
char hst[MNAMELEN];
u_char nfh[NFSX_FHMAX], krbname[100], dirpath[100], srvkrbname[100];
- char *opt, *name, *secname;
+ char *cp, *opt, *name, *secname;
int nametimeo = NFS_DEFAULT_NAMETIMEO;
int negnametimeo = NFS_DEFAULT_NEGNAMETIMEO;
int minvers = 0;
@@ -1158,8 +1158,12 @@ nfs_mount(struct mount *mp)
if (vfs_getopt(mp->mnt_optnew, "principal", (void **)&name, NULL) == 0)
strlcpy(srvkrbname, name, sizeof (srvkrbname));
- else
+ else {
snprintf(srvkrbname, sizeof (srvkrbname), "nfs@%s", hst);
+ cp = strchr(srvkrbname, ':');
+ if (cp != NULL)
+ *cp = '\0';
+ }
srvkrbnamelen = strlen(srvkrbname);
if (vfs_getopt(mp->mnt_optnew, "gssname", (void **)&name, NULL) == 0)
OpenPOWER on IntegriCloud