Fix a bug in NFSv3 READDIRPLUS reply processing

The client's READDIRPLUS logic skips the attributes and
filehandle of the ".." entry.  If the server doesn't send
attributes but does send a filehandle for "..", the
client's logic doesn't account for the extra "value
follows" field that indicates whether the filehandle is
present, causing the remaining entries in the reply
to be ignored.

Sponsored by:	Network Appliance, Inc.
Reviewed by:	rick, mohans
Approved by:	silby
MFC after:	2 weeks
This commit is contained in:
Chuck Lever 2006-03-08 01:43:01 +00:00
parent 34ef4672d2
commit 9f5349f23d

View File

@ -2312,7 +2312,11 @@ nfs_readdirplusrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred)
/* Just skip over the file handle */
tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
i = fxdr_unsigned(int, *tl);
nfsm_adv(nfsm_rndup(i));
if (i) {
tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
fhsize = fxdr_unsigned(int, *tl);
nfsm_adv(nfsm_rndup(fhsize));
}
}
if (newvp != NULLVP) {
if (newvp == vp)