Index: nfs_vfsops.c =================================================================== --- nfs_vfsops.c (revision 180682) +++ nfs_vfsops.c (working copy) @@ -105,7 +105,7 @@ downdelayinterval, CTLFLAG_RW, &nfs_tprintf_delay, 0, ""); static void nfs_decode_args(struct mount *mp, struct nfsmount *nmp, - struct nfs_args *argp); + struct nfs_args *argp, char *hst); static int mountnfs(struct nfs_args *, struct mount *, struct sockaddr *, char *, struct vnode **, struct ucred *cred); @@ -538,7 +538,8 @@ } static void -nfs_decode_args(struct mount *mp, struct nfsmount *nmp, struct nfs_args *argp) +nfs_decode_args(struct mount *mp, struct nfsmount *nmp, struct nfs_args *argp, + char *hst) { int s; int adjsock; @@ -704,7 +705,7 @@ } } - strlcpy(nmp->nm_hostname, argp->hostname, sizeof(nmp->nm_hostname)); + strlcpy(nmp->nm_hostname, hst, sizeof(nmp->nm_hostname)); p = strchr(nmp->nm_hostname, ':'); if (p) *p = '\0'; @@ -797,7 +798,12 @@ ~(NFSMNT_NFSV3 | NFSMNT_NOLOCKD /*|NFSMNT_XLATECOOKIE*/)) | (nmp->nm_flag & (NFSMNT_NFSV3 | NFSMNT_NOLOCKD /*|NFSMNT_XLATECOOKIE*/)); - nfs_decode_args(mp, nmp, &args); + error = copyinstr(args.hostname, hst, MNAMELEN-1, &len); + if (error) + goto out; + bzero(&hst[len], MNAMELEN - len); + nfs_decode_args(mp, nmp, &args, hst); + goto out; } @@ -935,7 +941,7 @@ nmp->nm_soproto = argp->proto; nmp->nm_rpcops = &nfs_rpcops; - nfs_decode_args(mp, nmp, argp); + nfs_decode_args(mp, nmp, argp, hst); /* * For Connection based sockets (TCP,...) defer the connect until