From 13651adbc76509937e310f6a6a515b59ff7bbafd Mon Sep 17 00:00:00 2001 From: Pavel Filipensky Date: Fri, 6 Mar 2009 16:44:37 +0000 Subject: 6793049 Accessing nfsv4 shared hsfs filesystem can lead to infinite loop on rfs4_op_readdir() --- usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'usr/src') diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c b/usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c index 6ea0f21acd..da1bbe51c2 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c +++ b/usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -633,12 +633,12 @@ readagain: rddir_result_size = rddir_data_len - uio.uio_resid; - /* Reading at the end of the directory */ - if (iseofdir && (rddir_result_size == 0)) { + /* No data were read. Check if we reached the end of the directory. */ + if (rddir_result_size == 0) { /* encode the BOOLEAN marking no further entries */ IXDR_PUT_U_INT32(ptr, false); /* encode the BOOLEAN signifying end of directory */ - IXDR_PUT_U_INT32(ptr, true); + IXDR_PUT_U_INT32(ptr, iseofdir ? true : false); resp->data_len = (char *)ptr - (char *)beginning_ptr; resp->mblk->b_wptr += resp->data_len; kmem_free((caddr_t)rddir_data, rddir_data_len); -- cgit v1.2.3