summaryrefslogtreecommitdiff
path: root/sys/compat/netbsd32
diff options
context:
space:
mode:
authormartin <martin@NetBSD.org>2022-08-03 11:11:31 +0000
committermartin <martin@NetBSD.org>2022-08-03 11:11:31 +0000
commitc0cbb295300c06ff7945a8867c3b48a4e30dcb6c (patch)
tree469ab5d104a53979d171771f7497c81e40af2693 /sys/compat/netbsd32
parent8644187dad7b54af091a9162382bb0b561d53fbc (diff)
Pull up following revision(s), all via patch
(requested by riastradh in ticket #1487): sys/compat/linux/arch/i386/linux_machdep.c: revision 1.168 sys/compat/sunos/sunos_misc.c: revision 1.177 sys/compat/netbsd32/netbsd32_compat_50.c: revision 1.52 sys/compat/common/kern_resource_43.c: revision 1.23 sys/compat/netbsd32/netbsd32_conv.h: revision 1.46 sys/compat/linux/arch/i386/linux_ptrace.c: revision 1.35 sys/compat/common/vfs_syscalls_12.c: revision 1.38 sys/compat/ultrix/ultrix_misc.c: revision 1.126 sys/compat/common/kern_sig_43.c: revision 1.37 sys/compat/linux/common/linux_mtio.c: revision 1.8 sys/compat/freebsd/freebsd_misc.c: revision 1.34 sys/compat/freebsd/freebsd_machdep.c: revision 1.5 sys/compat/linux/common/linux_olduname.c: revision 1.67 sys/compat/linux/arch/mips/linux_machdep.c: revision 1.44 sys/compat/freebsd/freebsd_sched.c: revision 1.23 sys/compat/ossaudio/ossaudio.c: revision 1.84 sys/compat/sys/time_types.h: revision 1.6 sys/compat/linux/arch/powerpc/linux_machdep.c: revision 1.51 sys/compat/common/ieee80211_20.c: revision 1.7 sys/compat/linux/common/linux_file.c: revision 1.119 sys/compat/linux/arch/arm/linux_machdep.c: revision 1.34 sys/compat/netbsd32/netbsd32_wait.c: revision 1.25 sys/compat/linux32/common/linux32_time.c: revision 1.38 sys/compat/linux/arch/powerpc/linux_ptrace.c: revision 1.33 sys/compat/linux/arch/alpha/linux_machdep.c: revision 1.52 sys/compat/linux32/arch/amd64/linux32_machdep.c: revision 1.46 sys/compat/netbsd32/netbsd32_compat_12.c: revision 1.36 sys/compat/ultrix/ultrix_ioctl.c: revision 1.39 sys/compat/linux/common/linux_misc.c: revision 1.252 sys/compat/linux/common/linux_hdio.c: revision 1.19 sys/compat/sunos/sunos_ioctl.c: revision 1.71 sys/compat/linux/common/linux_sched.c: revision 1.79 sys/compat/common/kern_info_43.c: revision 1.40 sys/compat/linux32/common/linux32_exec_elf32.c: revision 1.20 sys/compat/linux/common/linux_socket.c: revision 1.153 sys/compat/linux/arch/amd64/linux_machdep.c: revision 1.60 sys/compat/common/vfs_syscalls_43.c: revision 1.68 sys/compat/linux/arch/powerpc/linux_exec_powerpc.c: revision 1.25 sys/compat/netbsd32/netbsd32_ptrace.c: revision 1.9 sys/compat/common/kern_time_50.c: revision 1.37 sys/compat/netbsd32/netbsd32_compat_20.c: revision 1.42 sys/compat/linux/common/linux_cdrom.c: revision 1.28 sys/compat/linux/arch/m68k/linux_machdep.c: revision 1.43 sys/compat/common/kern_info_09.c: revision 1.22 sys/compat/linux32/common/linux32_resource.c: revision 1.12 sys/compat/linux/common/linux_oldolduname.c: revision 1.67 sys/compat/common/if_media_80.c: revision 1.4 sys/compat/linux/arch/alpha/linux_osf1.c: revision 1.5 sys/compat/netbsd32/netbsd32_nfssvc.c: revision 1.8 sys/compat/linux32/common/linux32_signal.c: revision 1.21 sys/compat/common/kern_sig_13.c: revision 1.22 sys/compat/sunos32/sunos32_ioctl.c: revision 1.36 sys/compat/netbsd32/netbsd32_compat_43.c: revision 1.62 sys/compat/linux/arch/arm/linux_ptrace.c: revision 1.23 sys/compat/netbsd32/netbsd32_time.c: revision 1.56 sys/compat/linux/common/linux_signal.c: revision 1.84 sys/compat/netbsd32/netbsd32_signal.c: revision 1.52 sys/compat/sunos32/sunos32_misc.c: revision 1.85 sys/compat/linux/common/linux_time.c: revision 1.40 sys/compat/linux/common/linux_fdio.c: revision 1.14 sys/compat/common/vfs_syscalls_30.c: revision 1.43 sys/compat: Memset zero before copyout. Just in case of uninitialized padding which would lead to kernel stack disclosure. If the compiler can prove the memset redundant then it can optimize it away; otherwise better safe than sorry.
Diffstat (limited to 'sys/compat/netbsd32')
-rw-r--r--sys/compat/netbsd32/netbsd32_compat_12.c5
-rw-r--r--sys/compat/netbsd32/netbsd32_compat_20.c6
-rw-r--r--sys/compat/netbsd32/netbsd32_compat_43.c6
-rw-r--r--sys/compat/netbsd32/netbsd32_compat_50.c10
-rw-r--r--sys/compat/netbsd32/netbsd32_conv.h60
-rw-r--r--sys/compat/netbsd32/netbsd32_nfssvc.c5
-rw-r--r--sys/compat/netbsd32/netbsd32_ptrace.c6
-rw-r--r--sys/compat/netbsd32/netbsd32_signal.c7
-rw-r--r--sys/compat/netbsd32/netbsd32_time.c8
-rw-r--r--sys/compat/netbsd32/netbsd32_wait.c5
10 files changed, 95 insertions, 23 deletions
diff --git a/sys/compat/netbsd32/netbsd32_compat_12.c b/sys/compat/netbsd32/netbsd32_compat_12.c
index 70b6b5351d5..884d3127c50 100644
--- a/sys/compat/netbsd32/netbsd32_compat_12.c
+++ b/sys/compat/netbsd32/netbsd32_compat_12.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_12.c,v 1.34 2019/01/27 02:08:40 pgoyette Exp $ */
+/* $NetBSD: netbsd32_compat_12.c,v 1.34.4.1 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_12.c,v 1.34 2019/01/27 02:08:40 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_12.c,v 1.34.4.1 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -62,6 +62,7 @@ static void
netbsd32_stat12_to_netbsd32(struct stat12 *sp12, struct netbsd32_stat12 *sp32)
{
+ memset(sp32, 0, sizeof(*sp32));
sp32->st_dev = sp12->st_dev;
sp32->st_ino = sp12->st_ino;
sp32->st_mode = sp12->st_mode;
diff --git a/sys/compat/netbsd32/netbsd32_compat_20.c b/sys/compat/netbsd32/netbsd32_compat_20.c
index 55f628c0677..7ef6e839e7c 100644
--- a/sys/compat/netbsd32/netbsd32_compat_20.c
+++ b/sys/compat/netbsd32/netbsd32_compat_20.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_20.c,v 1.38.4.1 2020/01/02 09:50:34 martin Exp $ */
+/* $NetBSD: netbsd32_compat_20.c,v 1.38.4.2 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_20.c,v 1.38.4.1 2020/01/02 09:50:34 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_20.c,v 1.38.4.2 2022/08/03 11:11:31 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -57,6 +57,8 @@ static inline void compat_20_netbsd32_from_statvfs(struct statvfs *,
static inline void
compat_20_netbsd32_from_statvfs(struct statvfs *sbp, struct netbsd32_statfs *sb32p)
{
+
+ memset(sb32p, 0, sizeof(*sb32p));
sb32p->f_type = 0; /* XXX Put an actual value? */
sb32p->f_flags = sbp->f_flag;
sb32p->f_bsize = (netbsd32_long)sbp->f_bsize;
diff --git a/sys/compat/netbsd32/netbsd32_compat_43.c b/sys/compat/netbsd32/netbsd32_compat_43.c
index 38c5313ec7b..d85f6551f3b 100644
--- a/sys/compat/netbsd32/netbsd32_compat_43.c
+++ b/sys/compat/netbsd32/netbsd32_compat_43.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_43.c,v 1.57.4.3 2020/03/08 10:36:38 martin Exp $ */
+/* $NetBSD: netbsd32_compat_43.c,v 1.57.4.4 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.57.4.3 2020/03/08 10:36:38 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.57.4.4 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_43.h"
@@ -646,6 +646,7 @@ compat_43_netbsd32_osigvec(struct lwp *l, const struct compat_43_netbsd32_osigve
return error;
if (SCARG_P32(uap, osv)) {
+ memset(&sv32, 0, sizeof(sv32));
NETBSD32PTR32(sv32.sv_handler, osa.sa_handler);
sv32.sv_mask = osa.sa_mask.__bits[0];
sv32.sv_flags = osa.sa_flags ^ SA_RESTART;
@@ -704,6 +705,7 @@ compat_43_netbsd32_osigstack(struct lwp *l, const struct compat_43_netbsd32_osig
return error;
if (SCARG_P32(uap, oss)) {
+ memset(&ss32, 0, sizeof(ss32));
NETBSD32PTR32(ss32.ss_sp, osa.ss_sp);
ss32.ss_onstack = (osa.ss_flags & SS_ONSTACK) != 0;
error = copyout(&ss32, SCARG_P32(uap, oss), sizeof(ss32));
diff --git a/sys/compat/netbsd32/netbsd32_compat_50.c b/sys/compat/netbsd32/netbsd32_compat_50.c
index cf631ba6770..9a23f1cb99a 100644
--- a/sys/compat/netbsd32/netbsd32_compat_50.c
+++ b/sys/compat/netbsd32/netbsd32_compat_50.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_50.c,v 1.39.2.2 2020/01/02 09:50:34 martin Exp $ */
+/* $NetBSD: netbsd32_compat_50.c,v 1.39.2.3 2022/08/03 11:11:31 martin Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.39.2.2 2020/01/02 09:50:34 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.39.2.3 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -167,6 +167,7 @@ compat_50_netbsd32_gettimeofday(struct lwp *l,
* NetBSD has no kernel notion of time zone, so we just
* fake up a timezone struct and return it if demanded.
*/
+ memset(&tzfake, 0, sizeof(tzfake));
tzfake.tz_minuteswest = 0;
tzfake.tz_dsttime = 0;
error = copyout(&tzfake, SCARG_P32(uap, tzp), sizeof(tzfake));
@@ -248,6 +249,8 @@ compat_50_netbsd32_adjtime(struct lwp *l,
return (error);
if (SCARG_P32(uap, olddelta)) {
+ memset(&atv, 0, sizeof(atv));
+
mutex_spin_enter(&timecounter_lock);
atv.tv_sec = time_adjtime / 1000000;
atv.tv_usec = time_adjtime % 1000000;
@@ -394,6 +397,7 @@ compat_50_netbsd32_timer_settime(struct lwp *l,
return error;
if (ovp) {
+ memset(&its32, 0, sizeof(its32));
netbsd32_from_timespec50(&ovp->it_interval, &its32.it_interval);
netbsd32_from_timespec50(&ovp->it_value, &its32.it_value);
return copyout(&its32, SCARG_P32(uap, ovalue), sizeof(its32));
@@ -416,6 +420,8 @@ compat_50_netbsd32_timer_gettime(struct lwp *l, const struct compat_50_netbsd32_
&its)) != 0)
return error;
+ memset(&its32, 0, sizeof(its32));
+
netbsd32_from_timespec50(&its.it_interval, &its32.it_interval);
netbsd32_from_timespec50(&its.it_value, &its32.it_value);
diff --git a/sys/compat/netbsd32/netbsd32_conv.h b/sys/compat/netbsd32/netbsd32_conv.h
index 56df25aadc0..7c05e9fd0a6 100644
--- a/sys/compat/netbsd32/netbsd32_conv.h
+++ b/sys/compat/netbsd32/netbsd32_conv.h
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_conv.h,v 1.38.4.1 2022/08/03 11:05:51 martin Exp $ */
+/* $NetBSD: netbsd32_conv.h,v 1.38.4.2 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -58,6 +58,7 @@ netbsd32_from_timeval50(const struct timeval *tv,
struct netbsd32_timeval50 *tv32)
{
+ memset(tv32, 0, sizeof(*tv32));
tv32->tv_sec = (netbsd32_time50_t)tv->tv_sec;
tv32->tv_usec = (netbsd32_long)tv->tv_usec;
}
@@ -67,6 +68,7 @@ netbsd32_from_timeval(const struct timeval *tv,
struct netbsd32_timeval *tv32)
{
+ memset(tv32, 0, sizeof(*tv32));
tv32->tv_sec = (netbsd32_time_t)tv->tv_sec;
tv32->tv_usec = tv->tv_usec;
}
@@ -76,6 +78,7 @@ netbsd32_to_timeval50(const struct netbsd32_timeval50 *tv32,
struct timeval *tv)
{
+ memset(tv, 0, sizeof(*tv));
tv->tv_sec = (time_t)tv32->tv_sec;
tv->tv_usec = tv32->tv_usec;
}
@@ -85,6 +88,7 @@ netbsd32_to_timeval(const struct netbsd32_timeval *tv32,
struct timeval *tv)
{
+ memset(tv, 0, sizeof(*tv));
tv->tv_sec = (time_t)tv32->tv_sec;
tv->tv_usec = tv32->tv_usec;
}
@@ -94,6 +98,7 @@ netbsd32_from_itimerval50(const struct itimerval *itv,
struct netbsd32_itimerval50 *itv32)
{
+ memset(itv32, 0, sizeof(*itv32));
netbsd32_from_timeval50(&itv->it_interval,
&itv32->it_interval);
netbsd32_from_timeval50(&itv->it_value,
@@ -105,6 +110,7 @@ netbsd32_from_itimerval(const struct itimerval *itv,
struct netbsd32_itimerval *itv32)
{
+ memset(itv32, 0, sizeof(*itv32));
netbsd32_from_timeval(&itv->it_interval,
&itv32->it_interval);
netbsd32_from_timeval(&itv->it_value,
@@ -116,6 +122,7 @@ netbsd32_to_itimerval50(const struct netbsd32_itimerval50 *itv32,
struct itimerval *itv)
{
+ memset(itv, 0, sizeof(*itv));
netbsd32_to_timeval50(&itv32->it_interval, &itv->it_interval);
netbsd32_to_timeval50(&itv32->it_value, &itv->it_value);
}
@@ -125,6 +132,7 @@ netbsd32_to_itimerval(const struct netbsd32_itimerval *itv32,
struct itimerval *itv)
{
+ memset(itv, 0, sizeof(*itv));
netbsd32_to_timeval(&itv32->it_interval, &itv->it_interval);
netbsd32_to_timeval(&itv32->it_value, &itv->it_value);
}
@@ -134,6 +142,7 @@ netbsd32_to_timespec50(const struct netbsd32_timespec50 *s32p,
struct timespec *p)
{
+ memset(p, 0, sizeof(*p));
p->tv_sec = (time_t)s32p->tv_sec;
p->tv_nsec = (long)s32p->tv_nsec;
}
@@ -143,6 +152,7 @@ netbsd32_to_timespec(const struct netbsd32_timespec *s32p,
struct timespec *p)
{
+ memset(p, 0, sizeof(*p));
p->tv_sec = (time_t)s32p->tv_sec;
p->tv_nsec = (long)s32p->tv_nsec;
}
@@ -152,6 +162,7 @@ netbsd32_from_timespec50(const struct timespec *p,
struct netbsd32_timespec50 *s32p)
{
+ memset(s32p, 0, sizeof(*s32p));
s32p->tv_sec = (netbsd32_time50_t)p->tv_sec;
s32p->tv_nsec = (netbsd32_long)p->tv_nsec;
}
@@ -161,6 +172,7 @@ netbsd32_from_timespec(const struct timespec *p,
struct netbsd32_timespec *s32p)
{
+ memset(s32p, 0, sizeof(*s32p));
s32p->tv_sec = (netbsd32_time_t)p->tv_sec;
s32p->tv_nsec = (netbsd32_long)p->tv_nsec;
}
@@ -170,6 +182,7 @@ netbsd32_from_rusage(const struct rusage *rup,
struct netbsd32_rusage *ru32p)
{
+ memset(ru32p, 0, sizeof(*ru32p));
netbsd32_from_timeval(&rup->ru_utime, &ru32p->ru_utime);
netbsd32_from_timeval(&rup->ru_stime, &ru32p->ru_stime);
#define C(var) ru32p->var = (netbsd32_long)rup->var
@@ -195,6 +208,7 @@ netbsd32_to_rusage(const struct netbsd32_rusage *ru32p,
struct rusage *rup)
{
+ memset(rup, 0, sizeof(*rup));
netbsd32_to_timeval(&ru32p->ru_utime, &rup->ru_utime);
netbsd32_to_timeval(&ru32p->ru_stime, &rup->ru_stime);
#define C(var) rup->var = (long)ru32p->var
@@ -220,6 +234,7 @@ netbsd32_from_rusage50(const struct rusage *rup,
struct netbsd32_rusage50 *ru32p)
{
+ memset(ru32p, 0, sizeof(*ru32p));
netbsd32_from_timeval50(&rup->ru_utime, &ru32p->ru_utime);
netbsd32_from_timeval50(&rup->ru_stime, &ru32p->ru_stime);
#define C(var) ru32p->var = (netbsd32_long)rup->var
@@ -254,6 +269,7 @@ netbsd32_to_iovecin(const struct netbsd32_iovec *iov32p, struct iovec *iovp,
* each field separately. I'm doing the latter to reduce
* the number of MALLOC()s.
*/
+ memset(iovp, 0, sizeof(*iovp));
total_iov_len = 0;
for (i = 0; i < len; i++, iovp++, iov32p++) {
if ((error = copyin(&iov32p->iov_base, &iov_base, sizeof(iov_base))))
@@ -284,6 +300,7 @@ static __inline void
netbsd32_to_msghdr(const struct netbsd32_msghdr *mhp32, struct msghdr *mhp)
{
+ memset(mhp, 0, sizeof(*mhp));
mhp->msg_name = NETBSD32PTR64(mhp32->msg_name);
mhp->msg_namelen = mhp32->msg_namelen;
mhp->msg_iovlen = (size_t)mhp32->msg_iovlen;
@@ -297,6 +314,7 @@ static __inline void
netbsd32_from_msghdr(struct netbsd32_msghdr *mhp32, const struct msghdr *mhp)
{
+ memset(mhp32, 0, sizeof(*mhp32));
NETBSD32PTR32(mhp32->msg_name, mhp->msg_name);
mhp32->msg_namelen = mhp->msg_namelen;
mhp32->msg_iovlen = mhp->msg_iovlen;
@@ -309,21 +327,27 @@ static __inline void
netbsd32_to_mmsghdr(const struct netbsd32_mmsghdr *mmsg32,
struct mmsghdr *mmsg)
{
- netbsd32_to_msghdr(&mmsg32->msg_hdr, &mmsg->msg_hdr);
- mmsg->msg_len = mmsg32->msg_len;
+
+ memset(mmsg, 0, sizeof(*mmsg));
+ netbsd32_to_msghdr(&mmsg32->msg_hdr, &mmsg->msg_hdr);
+ mmsg->msg_len = mmsg32->msg_len;
}
static __inline void
netbsd32_from_mmsghdr(struct netbsd32_mmsghdr *mmsg32,
const struct mmsghdr *mmsg)
{
- netbsd32_from_msghdr(&mmsg32->msg_hdr, &mmsg->msg_hdr);
- mmsg32->msg_len = mmsg->msg_len;
+
+ memset(mmsg32, 0, sizeof(*mmsg32));
+ netbsd32_from_msghdr(&mmsg32->msg_hdr, &mmsg->msg_hdr);
+ mmsg32->msg_len = mmsg->msg_len;
}
static __inline void
netbsd32_from_statvfs(const struct statvfs *sbp, struct netbsd32_statvfs *sb32p)
{
+
+ memset(sb32p, 0, sizeof(*sb32p));
sb32p->f_flag = sbp->f_flag;
sb32p->f_bsize = (netbsd32_u_long)sbp->f_bsize;
sb32p->f_frsize = (netbsd32_u_long)sbp->f_frsize;
@@ -365,6 +389,7 @@ static __inline void
netbsd32_from_timex(const struct timex *txp, struct netbsd32_timex *tx32p)
{
+ memset(tx32p, 0, sizeof(*tx32p));
tx32p->modes = txp->modes;
tx32p->offset = (netbsd32_long)txp->offset;
tx32p->freq = (netbsd32_long)txp->freq;
@@ -388,6 +413,7 @@ static __inline void
netbsd32_to_timex(const struct netbsd32_timex *tx32p, struct timex *txp)
{
+ memset(txp, 0, sizeof(*txp));
txp->modes = tx32p->modes;
txp->offset = (long)tx32p->offset;
txp->freq = (long)tx32p->freq;
@@ -410,6 +436,7 @@ netbsd32_to_timex(const struct netbsd32_timex *tx32p, struct timex *txp)
static __inline void
netbsd32_from___stat13(const struct stat *sbp, struct netbsd32_stat13 *sb32p)
{
+
memset(sb32p, 0, sizeof *sb32p);
sb32p->st_dev = (uint32_t)sbp->st_dev;
sb32p->st_ino = sbp->st_ino;
@@ -436,6 +463,7 @@ netbsd32_from___stat13(const struct stat *sbp, struct netbsd32_stat13 *sb32p)
static __inline void
netbsd32_from___stat50(const struct stat *sbp, struct netbsd32_stat50 *sb32p)
{
+
memset(sb32p, 0, sizeof *sb32p);
sb32p->st_dev = (uint32_t)sbp->st_dev;
sb32p->st_ino = sbp->st_ino;
@@ -462,6 +490,7 @@ netbsd32_from___stat50(const struct stat *sbp, struct netbsd32_stat50 *sb32p)
static __inline void
netbsd32_from_stat(const struct stat *sbp, struct netbsd32_stat *sb32p)
{
+
memset(sb32p, 0, sizeof *sb32p);
sb32p->st_dev = sbp->st_dev;
sb32p->st_ino = sbp->st_ino;
@@ -490,6 +519,7 @@ netbsd32_to_ipc_perm(const struct netbsd32_ipc_perm *ip32p,
struct ipc_perm *ipp)
{
+ memset(ipp, 0, sizeof(*ipp));
ipp->cuid = ip32p->cuid;
ipp->cgid = ip32p->cgid;
ipp->uid = ip32p->uid;
@@ -518,6 +548,7 @@ static __inline void
netbsd32_to_msg(const struct netbsd32_msg *m32p, struct msg *mp)
{
+ memset(mp, 0, sizeof(*mp));
mp->msg_next = NETBSD32PTR64(m32p->msg_next);
mp->msg_type = (long)m32p->msg_type;
mp->msg_ts = m32p->msg_ts;
@@ -540,6 +571,7 @@ netbsd32_to_msqid_ds50(const struct netbsd32_msqid_ds50 *ds32p,
struct msqid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&ds32p->msg_perm, &dsp->msg_perm);
dsp->_msg_cbytes = (u_long)ds32p->_msg_cbytes;
dsp->msg_qnum = (u_long)ds32p->msg_qnum;
@@ -556,6 +588,7 @@ netbsd32_to_msqid_ds(const struct netbsd32_msqid_ds *ds32p,
struct msqid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&ds32p->msg_perm, &dsp->msg_perm);
dsp->_msg_cbytes = (u_long)ds32p->_msg_cbytes;
dsp->msg_qnum = (u_long)ds32p->msg_qnum;
@@ -606,6 +639,7 @@ netbsd32_to_shmid_ds50(const struct netbsd32_shmid_ds50 *ds32p,
struct shmid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&ds32p->shm_perm, &dsp->shm_perm);
dsp->shm_segsz = ds32p->shm_segsz;
dsp->shm_lpid = ds32p->shm_lpid;
@@ -621,6 +655,7 @@ netbsd32_to_shmid_ds(const struct netbsd32_shmid_ds *ds32p,
struct shmid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&ds32p->shm_perm, &dsp->shm_perm);
dsp->shm_segsz = ds32p->shm_segsz;
dsp->shm_lpid = ds32p->shm_lpid;
@@ -668,6 +703,7 @@ netbsd32_to_semid_ds50(const struct netbsd32_semid_ds50 *s32dsp,
struct semid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&s32dsp->sem_perm, &dsp->sem_perm);
dsp->sem_nsems = (time_t)s32dsp->sem_nsems;
dsp->sem_otime = (time_t)s32dsp->sem_otime;
@@ -679,6 +715,7 @@ netbsd32_to_semid_ds(const struct netbsd32_semid_ds *s32dsp,
struct semid_ds *dsp)
{
+ memset(dsp, 0, sizeof(*dsp));
netbsd32_to_ipc_perm(&s32dsp->sem_perm, &dsp->sem_perm);
dsp->sem_nsems = s32dsp->sem_nsems;
dsp->sem_otime = s32dsp->sem_otime;
@@ -714,6 +751,7 @@ netbsd32_from_loadavg(struct netbsd32_loadavg *av32,
const struct loadavg *av)
{
+ memset(av32, 0, sizeof(*av32));
av32->ldavg[0] = av->ldavg[0];
av32->ldavg[1] = av->ldavg[1];
av32->ldavg[2] = av->ldavg[2];
@@ -723,6 +761,8 @@ netbsd32_from_loadavg(struct netbsd32_loadavg *av32,
static __inline void
netbsd32_to_kevent(struct netbsd32_kevent *ke32, struct kevent *ke)
{
+
+ memset(ke, 0, sizeof(*ke));
ke->ident = ke32->ident;
ke->filter = ke32->filter;
ke->flags = ke32->flags;
@@ -734,6 +774,8 @@ netbsd32_to_kevent(struct netbsd32_kevent *ke32, struct kevent *ke)
static __inline void
netbsd32_from_kevent(struct kevent *ke, struct netbsd32_kevent *ke32)
{
+
+ memset(ke32, 0, sizeof(*ke32));
ke32->ident = ke->ident;
ke32->filter = ke->filter;
ke32->flags = ke->flags;
@@ -745,6 +787,8 @@ netbsd32_from_kevent(struct kevent *ke, struct netbsd32_kevent *ke32)
static __inline void
netbsd32_to_sigevent(const struct netbsd32_sigevent *ev32, struct sigevent *ev)
{
+
+ memset(ev, 0, sizeof(*ev));
ev->sigev_notify = ev32->sigev_notify;
ev->sigev_signo = ev32->sigev_signo;
/*
@@ -807,6 +851,7 @@ netbsd32_copyout_plistref(netbsd32_pointer_t n32p, struct plistref *p)
{
struct netbsd32_plistref n32plist;
+ memset(&n32plist, 0, sizeof(n32plist));
NETBSD32PTR32(n32plist.pref_plist, p->pref_plist);
n32plist.pref_len = p->pref_len;
return copyout(&n32plist, NETBSD32PTR64(n32p),
@@ -834,6 +879,7 @@ netbsd32_copyout_nvlist_ref_t(netbsd32_pointer_t n32p, nvlist_ref_t *p)
{
netbsd32_nvlist_ref_t n32nv;
+ memset(&n32nv, 0, sizeof(n32nv));
NETBSD32PTR32(n32nv.buf, p->buf);
n32nv.len = p->len;
n32nv.flags = p->flags;
@@ -845,6 +891,8 @@ static __inline void
netbsd32_to_mq_attr(const struct netbsd32_mq_attr *a32,
struct mq_attr *attr)
{
+
+ memset(attr, 0, sizeof(*attr));
attr->mq_flags = a32->mq_flags;
attr->mq_maxmsg = a32->mq_maxmsg;
attr->mq_msgsize = a32->mq_msgsize;
@@ -855,6 +903,8 @@ static __inline void
netbsd32_from_mq_attr(const struct mq_attr *attr,
struct netbsd32_mq_attr *a32)
{
+
+ memset(a32, 0, sizeof(*a32));
a32->mq_flags = attr->mq_flags;
a32->mq_maxmsg = attr->mq_maxmsg;
a32->mq_msgsize = attr->mq_msgsize;
diff --git a/sys/compat/netbsd32/netbsd32_nfssvc.c b/sys/compat/netbsd32/netbsd32_nfssvc.c
index e2c39c99f02..0278af12cf2 100644
--- a/sys/compat/netbsd32/netbsd32_nfssvc.c
+++ b/sys/compat/netbsd32/netbsd32_nfssvc.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_nfssvc.c,v 1.6.4.1 2022/08/03 10:58:58 martin Exp $ */
+/* $NetBSD: netbsd32_nfssvc.c,v 1.6.4.2 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 2015 Matthew R. Green
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_nfssvc.c,v 1.6.4.1 2022/08/03 10:58:58 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_nfssvc.c,v 1.6.4.2 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_nfs.h"
@@ -121,6 +121,7 @@ nfssvc32_nsd_out(void *argp, const struct nfsd_srvargs *nsd)
{
struct netbsd32_nfsd_srvargs args32;
+ memset(&args32, 0, sizeof(args32));
NETBSD32PTR32(args32.nsd_nfsd, nsd->nsd_nfsd);
args32.nsd_uid = nsd->nsd_uid;
args32.nsd_haddr = nsd->nsd_haddr;
diff --git a/sys/compat/netbsd32/netbsd32_ptrace.c b/sys/compat/netbsd32/netbsd32_ptrace.c
index 1741b852051..623224c096e 100644
--- a/sys/compat/netbsd32/netbsd32_ptrace.c
+++ b/sys/compat/netbsd32/netbsd32_ptrace.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_ptrace.c,v 1.7 2019/06/04 16:29:53 mgorny Exp $ */
+/* $NetBSD: netbsd32_ptrace.c,v 1.7.2.1 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ptrace.c,v 1.7 2019/06/04 16:29:53 mgorny Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ptrace.c,v 1.7.2.1 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ptrace.h"
@@ -82,6 +82,7 @@ netbsd32_copyout_piod(const struct ptrace_io_desc *piod, void *addr, size_t len)
if (len != 0 && sizeof(piod32) != len)
return EINVAL;
+ memset(&piod32, 0, sizeof(piod32));
piod32.piod_op = piod->piod_op;
NETBSD32PTR32(piod32.piod_offs, piod->piod_offs);
NETBSD32PTR32(piod32.piod_addr, piod->piod_addr);
@@ -113,6 +114,7 @@ netbsd32_copyout_siginfo(const struct ptrace_siginfo *psi, void *addr, size_t le
if (sizeof(psi32) != len)
return EINVAL;
+ memset(&psi32, 0, sizeof(psi32));
psi32.psi_lwpid = psi->psi_lwpid;
netbsd32_si_to_si32(&psi32.psi_siginfo, &psi->psi_siginfo);
return copyout(&psi32, addr, sizeof(psi32));
diff --git a/sys/compat/netbsd32/netbsd32_signal.c b/sys/compat/netbsd32/netbsd32_signal.c
index 45004b5b7fa..f2f0c8452e3 100644
--- a/sys/compat/netbsd32/netbsd32_signal.c
+++ b/sys/compat/netbsd32/netbsd32_signal.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_signal.c,v 1.45.8.1 2019/11/19 13:33:21 martin Exp $ */
+/* $NetBSD: netbsd32_signal.c,v 1.45.8.2 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.45.8.1 2019/11/19 13:33:21 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.45.8.2 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ktrace.h"
@@ -86,6 +86,7 @@ netbsd32_sigaction(struct lwp *l, const struct netbsd32_sigaction_args *uap, reg
return (error);
if (SCARG_P32(uap, osa)) {
+ memset(&sa32, 0, sizeof(sa32));
NETBSD32PTR32(sa32.netbsd32_sa_handler, osa.sa_handler);
sa32.netbsd32_sa_mask = osa.sa_mask.__bits[0];
sa32.netbsd32_sa_flags = osa.sa_flags;
@@ -135,6 +136,7 @@ netbsd32___sigaction14(struct lwp *l, const struct netbsd32___sigaction14_args *
if (error)
return (error);
if (SCARG_P32(uap, osa)) {
+ memset(&sa32, 0, sizeof(sa32));
NETBSD32PTR32(sa32.netbsd32_sa_handler, osa.sa_handler);
sa32.netbsd32_sa_mask = osa.sa_mask;
sa32.netbsd32_sa_flags = osa.sa_flags;
@@ -175,6 +177,7 @@ netbsd32___sigaction_sigtramp(struct lwp *l, const struct netbsd32___sigaction_s
if (error)
return (error);
if (SCARG_P32(uap, osa)) {
+ memset(&sa32, 0, sizeof(sa32));
NETBSD32PTR32(sa32.netbsd32_sa_handler, osa.sa_handler);
sa32.netbsd32_sa_mask = osa.sa_mask;
sa32.netbsd32_sa_flags = osa.sa_flags;
diff --git a/sys/compat/netbsd32/netbsd32_time.c b/sys/compat/netbsd32/netbsd32_time.c
index bc92ea073af..efa66cc208c 100644
--- a/sys/compat/netbsd32/netbsd32_time.c
+++ b/sys/compat/netbsd32/netbsd32_time.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_time.c,v 1.51 2019/01/27 02:08:40 pgoyette Exp $ */
+/* $NetBSD: netbsd32_time.c,v 1.51.4.1 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.51 2019/01/27 02:08:40 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.51.4.1 2022/08/03 11:11:31 martin Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ntp.h"
@@ -206,6 +206,7 @@ netbsd32___gettimeofday50(struct lwp *l, const struct netbsd32___gettimeofday50_
* NetBSD has no kernel notion of time zone, so we just
* fake up a timezone struct and return it if demanded.
*/
+ memset(&tzfake, 0, sizeof(tzfake));
tzfake.tz_minuteswest = 0;
tzfake.tz_dsttime = 0;
error = copyout(&tzfake, SCARG_P32(uap, tzp), sizeof(tzfake));
@@ -266,6 +267,7 @@ netbsd32___adjtime50(struct lwp *l, const struct netbsd32___adjtime50_args *uap,
return (error);
if (SCARG_P32(uap, olddelta)) {
+ memset(&atv, 0, sizeof(atv));
atv.tv_sec = time_adjtime / 1000000;
atv.tv_usec = time_adjtime % 1000000;
if (atv.tv_usec < 0) {
@@ -477,6 +479,7 @@ netbsd32___timer_settime50(struct lwp *l, const struct netbsd32___timer_settime5
return error;
if (ovp) {
+ memset(&its32, 0, sizeof(its32));
netbsd32_from_timespec(&ovp->it_interval, &its32.it_interval);
netbsd32_from_timespec(&ovp->it_value, &its32.it_value);
return copyout(&its32, SCARG_P32(uap, ovalue), sizeof(its32));
@@ -499,6 +502,7 @@ netbsd32___timer_gettime50(struct lwp *l, const struct netbsd32___timer_gettime5
&its)) != 0)
return error;
+ memset(&its32, 0, sizeof(its32));
netbsd32_from_timespec(&its.it_interval, &its32.it_interval);
netbsd32_from_timespec(&its.it_value, &its32.it_value);
diff --git a/sys/compat/netbsd32/netbsd32_wait.c b/sys/compat/netbsd32/netbsd32_wait.c
index d5a5453e465..c6150f8d118 100644
--- a/sys/compat/netbsd32/netbsd32_wait.c
+++ b/sys/compat/netbsd32/netbsd32_wait.c
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_wait.c,v 1.23 2016/09/23 14:09:39 skrll Exp $ */
+/* $NetBSD: netbsd32_wait.c,v 1.23.20.1 2022/08/03 11:11:31 martin Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_wait.c,v 1.23 2016/09/23 14:09:39 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_wait.c,v 1.23.20.1 2022/08/03 11:11:31 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -132,6 +132,7 @@ netbsd32_wait6(struct lwp *l, const struct netbsd32_wait6_args *uap,
if (wrup != NULL && error == 0) {
struct netbsd32_wrusage wru32;
+ memset(&wru32, 0, sizeof(wru32));
netbsd32_from_rusage(&wrup->wru_self, &wru32.wru_self);
netbsd32_from_rusage(&wrup->wru_children, &wru32.wru_children);
error = copyout(&wru32, SCARG_P32(uap, wru), sizeof(wru32));