Module Name: src
Committed By: pooka
Date: Tue Jul 13 15:38:15 UTC 2010
Modified Files:
src/sys/compat/common: vfs_syscalls_50.c
src/sys/kern: vfs_vnops.c
Log Message:
Don't leak kernel stack into userspace.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/compat/common/vfs_syscalls_50.c
cvs rdiff -u -r1.174 -r1.175 src/sys/kern/vfs_vnops.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/compat/common/vfs_syscalls_50.c
diff -u src/sys/compat/common/vfs_syscalls_50.c:1.5 src/sys/compat/common/vfs_syscalls_50.c:1.6
--- src/sys/compat/common/vfs_syscalls_50.c:1.5 Sun Aug 9 22:49:00 2009
+++ src/sys/compat/common/vfs_syscalls_50.c Tue Jul 13 15:38:15 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_syscalls_50.c,v 1.5 2009/08/09 22:49:00 haad Exp $ */
+/* $NetBSD: vfs_syscalls_50.c,v 1.6 2010/07/13 15:38:15 pooka Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_50.c,v 1.5 2009/08/09 22:49:00 haad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_50.c,v 1.6 2010/07/13 15:38:15 pooka Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -93,6 +93,7 @@
ost->st_blksize = st->st_blksize;
ost->st_flags = st->st_flags;
ost->st_gen = st->st_gen;
+ memset(ost->st_spare, 0, sizeof(ost->st_spare));
}
/*
Index: src/sys/kern/vfs_vnops.c
diff -u src/sys/kern/vfs_vnops.c:1.174 src/sys/kern/vfs_vnops.c:1.175
--- src/sys/kern/vfs_vnops.c:1.174 Thu Jun 24 13:03:12 2010
+++ src/sys/kern/vfs_vnops.c Tue Jul 13 15:38:15 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_vnops.c,v 1.174 2010/06/24 13:03:12 hannken Exp $ */
+/* $NetBSD: vfs_vnops.c,v 1.175 2010/07/13 15:38:15 pooka Exp $ */
/*-
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.174 2010/06/24 13:03:12 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.175 2010/07/13 15:38:15 pooka Exp $");
#include "veriexec.h"
@@ -601,6 +601,7 @@
int error;
mode_t mode;
+ memset(&va, 0, sizeof(va));
error = VOP_GETATTR(vp, &va, kauth_cred_get());
if (error)
return (error);
@@ -649,6 +650,7 @@
sb->st_flags = va.va_flags;
sb->st_gen = 0;
sb->st_blocks = va.va_bytes / S_BLKSIZE;
+ memset(sb->st_spare, 0, sizeof(sb->st_spare));
return (0);
}