aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/nandfs
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2018-11-23 23:07:49 +0000
committerMark Johnston <markj@FreeBSD.org>2018-11-23 23:07:49 +0000
commitfee65dfc374d5509e9230c7d53449dfa8f36aa78 (patch)
treec2e178722e15cc434b09814bdbb54d5d38301e32 /sys/fs/nandfs
parente8927aa6c68bd1d647270bb7c6817dd5118cf8cf (diff)
downloadsrc-fee65dfc374d5509e9230c7d53449dfa8f36aa78.tar.gz
src-fee65dfc374d5509e9230c7d53449dfa8f36aa78.zip
Ensure the dirent remains initialized when dirent.d_fileno is unset.
Reported by: rmacklem MFC with: r340856 Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=340859
Diffstat (limited to 'sys/fs/nandfs')
-rw-r--r--sys/fs/nandfs/nandfs_vnops.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/fs/nandfs/nandfs_vnops.c b/sys/fs/nandfs/nandfs_vnops.c
index ca6929e569f7..634008d36421 100644
--- a/sys/fs/nandfs/nandfs_vnops.c
+++ b/sys/fs/nandfs/nandfs_vnops.c
@@ -1226,6 +1226,7 @@ nandfs_readdir(struct vop_readdir_args *ap)
ndirent = (struct nandfs_dir_entry *)pos;
name_len = ndirent->name_len;
+ memset(&dirent, 0, sizeof(dirent));
dirent.d_fileno = ndirent->inode;
if (dirent.d_fileno) {
dirent.d_type = ndirent->file_type;
@@ -1243,7 +1244,7 @@ nandfs_readdir(struct vop_readdir_args *ap)
* If there isn't enough space in the uio to return a
* whole dirent, break off read
*/
- if (uio->uio_resid < dirent.d_reclen)
+ if (uio->uio_resid < GENERIC_DIRSIZ(&dirent))
break;
/* Transfer */