diff options
author | Mark Johnston <markj@FreeBSD.org> | 2018-11-23 23:07:49 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2018-11-23 23:07:49 +0000 |
commit | fee65dfc374d5509e9230c7d53449dfa8f36aa78 (patch) | |
tree | c2e178722e15cc434b09814bdbb54d5d38301e32 /sys/fs/nandfs | |
parent | e8927aa6c68bd1d647270bb7c6817dd5118cf8cf (diff) | |
download | src-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.c | 3 |
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 */ |