Author: markj
Date: Fri Nov 23 23:07:49 2018
New Revision: 340859
URL: https://svnweb.freebsd.org/changeset/base/340859

Log:
  Ensure the dirent remains initialized when dirent.d_fileno is unset.
  
  Reported by:  rmacklem
  MFC with:     r340856
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/fs/nandfs/nandfs_vnops.c

Modified: head/sys/fs/nandfs/nandfs_vnops.c
==============================================================================
--- head/sys/fs/nandfs/nandfs_vnops.c   Fri Nov 23 22:37:35 2018        
(r340858)
+++ head/sys/fs/nandfs/nandfs_vnops.c   Fri Nov 23 23:07:49 2018        
(r340859)
@@ -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 */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to