From e098f7b0336f194ed576cae2bd42ae3709bfece5 Mon Sep 17 00:00:00 2001 From: brian Date: Wed, 25 Aug 2010 18:09:51 +0000 Subject: If we read zero bytes from the directory, early out with ENOENT rather than forging ahead and interpreting garbage buffer content and dirent structures. This change backs out r211684 which was essentially a no-op. MFC after: 1 week --- sys/kern/vfs_default.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'sys/kern/vfs_default.c') diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index bf037fe..195e735 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -281,9 +281,13 @@ get_next_dirent(struct vnode *vp, struct dirent **dpp, char *dirbuf, if (error) return (error); - *cpos = dirbuf; - *len = uio.uio_offset - *off; *off = uio.uio_offset; + + *cpos = dirbuf; + *len = (dirbuflen - uio.uio_resid); + + if (*len == 0) + return (ENOENT); } dp = (struct dirent *)(*cpos); -- cgit v1.1