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
This commit is contained in:
Rick Macklem 2015-07-03 22:11:07 +00:00
parent 7c160e33d7
commit 2a3508eb48
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=285113

View File

@ -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)