summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2015-05-03 02:02:15 +0000
committerguenther <guenther@openbsd.org>2015-05-03 02:02:15 +0000
commit64462c817dba3fa9ce6a40d86982615cad24f821 (patch)
treecac6f655ec4b9f5a8ff984b1a4c7dcbef5d54018 /sys
parentEliminate the -U flag and make usage of DUID in /etc/dumpdates the default. (diff)
downloadwireguard-openbsd-64462c817dba3fa9ce6a40d86982615cad24f821.tar.xz
wireguard-openbsd-64462c817dba3fa9ce6a40d86982615cad24f821.zip
Make sure we don't leak bytes from malloced memory in the padding of struct
dirent. (The memset in previous commit was both wrong and insufficient.) problem with memset noted by brad@ and jsg@ ok millert@
Diffstat (limited to 'sys')
-rw-r--r--sys/nfs/nfs_vnops.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index 839624970d8..9f563810f97 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_vnops.c,v 1.163 2015/04/17 04:43:21 guenther Exp $ */
+/* $OpenBSD: nfs_vnops.c,v 1.164 2015/05/03 02:02:15 guenther Exp $ */
/* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */
/*
@@ -1991,7 +1991,8 @@ nfs_readdir(void *v)
cnt = 5;
- data = malloc(NFS_DIRBLKSIZ, M_TEMP, M_WAITOK);
+ /* M_ZERO to avoid leaking kernel data in dirent padding */
+ data = malloc(NFS_DIRBLKSIZ, M_TEMP, M_WAITOK|M_ZERO);
do {
struct nfs_dirent *ndp = data;
@@ -2174,7 +2175,6 @@ nfs_readdirrpc(struct vnode *vp, struct uio *uiop, struct ucred *cred,
ndp = (struct nfs_dirent *)
uiop->uio_iov->iov_base;
dp = &ndp->dirent;
- memset(dp, 0, sizeof(dp));
dp->d_fileno = fileno;
dp->d_namlen = len;
dp->d_reclen = tlen;