Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Aug 2015 22:42:38 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r287267 - stable/10/sys/fs/nfsserver
Message-ID:  <201508282242.t7SMgcqL020152@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Fri Aug 28 22:42:37 2015
New Revision: 287267
URL: https://svnweb.freebsd.org/changeset/base/287267

Log:
  MFC: r286790
  For the case where an NFSv4.1 ExchangeID operation has the client identifier
  that already has a confirmed ClientID, the nfsrv_setclient() function would
  not fill in the clientidp being returned. As such, the value of ClientID
  returned would be whatever garbage was on the stack.
  This patch fixes the problem by filling in these fields.

Modified:
  stable/10/sys/fs/nfsserver/nfs_nfsdstate.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/fs/nfsserver/nfs_nfsdstate.c
==============================================================================
--- stable/10/sys/fs/nfsserver/nfs_nfsdstate.c	Fri Aug 28 20:53:08 2015	(r287266)
+++ stable/10/sys/fs/nfsserver/nfs_nfsdstate.c	Fri Aug 28 22:42:37 2015	(r287267)
@@ -406,9 +406,12 @@ nfsrv_setclient(struct nfsrv_descript *n
 	}
 
 	/* For NFSv4.1, mark that we found a confirmed clientid. */
-	if ((nd->nd_flag & ND_NFSV41) != 0)
+	if ((nd->nd_flag & ND_NFSV41) != 0) {
+		clientidp->lval[0] = clp->lc_clientid.lval[0];
+		clientidp->lval[1] = clp->lc_clientid.lval[1];
+		confirmp->lval[0] = 0;	/* Ignored by client */
 		confirmp->lval[1] = 1;
-	else {
+	} else {
 		/*
 		 * id and verifier match, so update the net address info
 		 * and get rid of any existing callback authentication



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508282242.t7SMgcqL020152>