summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2015-07-31 21:31:58 +0000
committerrmacklem <rmacklem@FreeBSD.org>2015-07-31 21:31:58 +0000
commit501e4133524f89438224059c5be805ccbf9ba323 (patch)
tree2edfe2892b3aeb954693181bfb1f9d17943838cd /sys/fs
parentad05cf684ab82058ad1fdf2e7592340552e05ac1 (diff)
downloadFreeBSD-src-501e4133524f89438224059c5be805ccbf9ba323.zip
FreeBSD-src-501e4133524f89438224059c5be805ccbf9ba323.tar.gz
MFC: r285113
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.
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 fba565e..0f8c36a 100644
--- a/sys/fs/nfsclient/nfs_clvfsops.c
+++ b/sys/fs/nfsclient/nfs_clvfsops.c
@@ -774,7 +774,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;
@@ -1153,8 +1153,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