summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>1999-11-18 08:14:20 +0000
committerdillon <dillon@FreeBSD.org>1999-11-18 08:14:20 +0000
commit13bf2dbc72bd9fa67cee228bb71599f28fa5deb4 (patch)
tree1e9f6177099f5830d031c29fd80bc1676466fbaf /sys/kern
parent52bb19a82f43badcc0e3eeed21c552fc0a012de6 (diff)
downloadFreeBSD-src-13bf2dbc72bd9fa67cee228bb71599f28fa5deb4.zip
FreeBSD-src-13bf2dbc72bd9fa67cee228bb71599f28fa5deb4.tar.gz
Ensure that garbage from the kernel stack does not wind up being
returned to user mode in the spare fields of the stat structure. PR: kern/14966 Reviewed by: dillon@freebsd.org Submitted by: Kelly Yancey kbyanc@posi.net
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_extattr.c2
-rw-r--r--sys/kern/vfs_syscalls.c2
-rw-r--r--sys/kern/vfs_vnops.c8
3 files changed, 12 insertions, 0 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index b83e502..e0045c1 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -1745,6 +1745,8 @@ cvtnstat(sb, nsb)
nsb->st_blksize = sb->st_blksize;
nsb->st_flags = sb->st_flags;
nsb->st_gen = sb->st_gen;
+ nsb->st_qspare[0] = sb->st_qspare[0];
+ nsb->st_qspare[1] = sb->st_qspare[1];
}
#ifndef _SYS_SYSPROTO_H_
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index b83e502..e0045c1 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -1745,6 +1745,8 @@ cvtnstat(sb, nsb)
nsb->st_blksize = sb->st_blksize;
nsb->st_flags = sb->st_flags;
nsb->st_gen = sb->st_gen;
+ nsb->st_qspare[0] = sb->st_qspare[0];
+ nsb->st_qspare[1] = sb->st_qspare[1];
}
#ifndef _SYS_SYSPROTO_H_
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 663897f..ebe3497 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -398,6 +398,14 @@ vn_stat(vp, sb, p)
error = VOP_GETATTR(vp, vap, p->p_ucred, p);
if (error)
return (error);
+
+ /*
+ * Zero the spare stat fields
+ */
+ sb->st_lspare = 0;
+ sb->st_qspare[0] = 0;
+ sb->st_qspare[1] = 0;
+
/*
* Copy from vattr table
*/
OpenPOWER on IntegriCloud