diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2023-02-06 16:24:27 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2023-02-06 16:24:27 +0000 |
commit | c9ff56ce2d4126eac79342eff2facafbbbd3f39c (patch) | |
tree | 8925e5671d7070c15464b2f6d4a5ad91aca1e509 | |
parent | cc6e8949daf0c6167d0050d7d85fc8c1426dd6dc (diff) | |
download | src-c9ff56ce2d4126eac79342eff2facafbbbd3f39c.tar.gz src-c9ff56ce2d4126eac79342eff2facafbbbd3f39c.zip |
tarfs: Terminate dirents before copying them out.
Reported by: markj
Sponsored by: Juniper Networks, Inc.
Sponsored bu: Klara, Inc.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D38400
-rw-r--r-- | sys/fs/tarfs/tarfs_vnops.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/fs/tarfs/tarfs_vnops.c b/sys/fs/tarfs/tarfs_vnops.c index a70a077424b4..43c434e370e3 100644 --- a/sys/fs/tarfs/tarfs_vnops.c +++ b/sys/fs/tarfs/tarfs_vnops.c @@ -294,6 +294,7 @@ tarfs_readdir(struct vop_readdir_args *ap) cde.d_reclen = GENERIC_DIRSIZ(&cde); if (cde.d_reclen > uio->uio_resid) goto full; + dirent_terminate(&cde); error = uiomove(&cde, cde.d_reclen, uio); if (error) return (error); @@ -317,6 +318,7 @@ tarfs_readdir(struct vop_readdir_args *ap) cde.d_reclen = GENERIC_DIRSIZ(&cde); if (cde.d_reclen > uio->uio_resid) goto full; + dirent_terminate(&cde); error = uiomove(&cde, cde.d_reclen, uio); if (error) return (error); @@ -374,6 +376,7 @@ tarfs_readdir(struct vop_readdir_args *ap) cde.d_reclen = GENERIC_DIRSIZ(&cde); if (cde.d_reclen > uio->uio_resid) goto full; + dirent_terminate(&cde); error = uiomove(&cde, cde.d_reclen, uio); if (error != 0) goto done; |