summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorPavel Filipensky <Pavel.Filipensky@Sun.COM>2009-03-06 16:44:37 +0000
committerPavel Filipensky <Pavel.Filipensky@Sun.COM>2009-03-06 16:44:37 +0000
commit13651adbc76509937e310f6a6a515b59ff7bbafd (patch)
tree76e553630a4305f5e750d9dbbbdbb54aa590f761 /usr/src
parent7fc02a305b3093790884c8c5d13db1e1c4b70acb (diff)
downloadillumos-gate-13651adbc76509937e310f6a6a515b59ff7bbafd.tar.gz
6793049 Accessing nfsv4 shared hsfs filesystem can lead to infinite loop on rfs4_op_readdir()
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_srv_readdir.c8
1 files changed, 4 insertions, 4 deletions
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);