aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2023-02-06 16:24:27 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2023-02-06 16:24:27 +0000
commitc9ff56ce2d4126eac79342eff2facafbbbd3f39c (patch)
tree8925e5671d7070c15464b2f6d4a5ad91aca1e509
parentcc6e8949daf0c6167d0050d7d85fc8c1426dd6dc (diff)
downloadsrc-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.c3
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;