diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2015-07-03 22:11:07 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2015-07-03 22:11:07 +0000 |
commit | 5ebe352487469af039425cf102dcbbc762f8ded4 (patch) | |
tree | 0691d91dad6b9a9ae70a5618e3be1f4489b48b87 /sys/fs | |
parent | 9854b22dd7482bdaf98ccec1864fd0276dc420a6 (diff) | |
download | FreeBSD-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.c | 8 |
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) |