Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/kern properly test the msgsz as "msgsz - len". from PR#...
details: https://anonhg.NetBSD.org/src/rev/0997154cf3d8
branches: trunk
changeset: 472103:0997154cf3d8
user: mrg <mrg%NetBSD.org@localhost>
date: Wed Apr 21 02:31:49 1999 +0000
description:
properly test the msgsz as "msgsz - len". from PR#7386
diffstat:
sys/kern/kern_subr.c | 7 ++++++-
sys/kern/kern_synch.c | 4 +++-
sys/kern/subr_autoconf.c | 5 +++--
sys/kern/sysv_msg.c | 6 +++---
sys/kern/uipc_usrreq.c | 20 +++++++++++++++++++-
sys/kern/vfs_subr.c | 6 +++++-
6 files changed, 39 insertions(+), 9 deletions(-)
diffs (147 lines):
diff -r da5823983086 -r 0997154cf3d8 sys/kern/kern_subr.c
--- a/sys/kern/kern_subr.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/kern_subr.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_subr.c,v 1.45 1999/03/24 05:51:25 mrg Exp $ */
+/* $NetBSD: kern_subr.c,v 1.46 1999/04/21 02:31:49 mrg Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -757,8 +757,13 @@
} else if (rootdv->dv_class == DV_IFNET)
goto nodumpdev;
else {
+#if 0 /* DUMPCTL */
+ dumpdv = dumpdev = NULL;
+ goto nodumpdev;
+#else
dumpdv = rootdv;
dumpdev = MAKEDISKDEV(major(rootdev), dumpdv->dv_unit, 1);
+#endif
}
out:
diff -r da5823983086 -r 0997154cf3d8 sys/kern/kern_synch.c
--- a/sys/kern/kern_synch.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/kern_synch.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_synch.c,v 1.57 1999/03/24 05:51:25 mrg Exp $ */
+/* $NetBSD: kern_synch.c,v 1.58 1999/04/21 02:31:50 mrg Exp $ */
/*-
* Copyright (c) 1982, 1986, 1990, 1991, 1993
@@ -620,10 +620,12 @@
rlim->rlim_cur += 5;
}
}
+#if 0
if (autonicetime && s > autonicetime && p->p_ucred->cr_uid && p->p_nice == NZERO) {
p->p_nice = autoniceval + NZERO;
resetpriority(p);
}
+#endif
/*
* Pick a new current process and record its start time.
diff -r da5823983086 -r 0997154cf3d8 sys/kern/subr_autoconf.c
--- a/sys/kern/subr_autoconf.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/subr_autoconf.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_autoconf.c,v 1.37 1998/12/03 23:50:39 pk Exp $ */
+/* $NetBSD: subr_autoconf.c,v 1.38 1999/04/21 02:31:50 mrg Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -359,7 +359,8 @@
if (cf->cf_fstate == FSTATE_STAR)
cf->cf_unit++;
}
-#if defined(__alpha__) || defined(hp300) || defined(__i386__) || defined(__sparc__)
+#if defined(__alpha__) || defined(hp300) || defined(__i386__) || \
+ (defined(__sparc__) && !defined(SUN4U))
device_register(dev, aux);
#endif
(*ca->ca_attach)(parent, dev, aux);
diff -r da5823983086 -r 0997154cf3d8 sys/kern/sysv_msg.c
--- a/sys/kern/sysv_msg.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/sysv_msg.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: sysv_msg.c,v 1.24 1998/10/21 22:24:28 tron Exp $ */
+/* $NetBSD: sysv_msg.c,v 1.25 1999/04/21 02:31:50 mrg Exp $ */
/*
* Implementation of SVID messages
@@ -847,10 +847,10 @@
for (len = 0; len < msgsz; len += msginfo.msgssz) {
size_t tlen;
- if (msgsz > msginfo.msgssz)
+ if (msgsz - len > msginfo.msgssz)
tlen = msginfo.msgssz;
else
- tlen = msgsz;
+ tlen = msgsz - len;
if (next <= -1)
panic("next too low #3");
if (next >= msginfo.msgseg)
diff -r da5823983086 -r 0997154cf3d8 sys/kern/uipc_usrreq.c
--- a/sys/kern/uipc_usrreq.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/uipc_usrreq.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: uipc_usrreq.c,v 1.39 1999/03/22 17:54:39 sommerfe Exp $ */
+/* $NetBSD: uipc_usrreq.c,v 1.40 1999/04/21 02:31:50 mrg Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -916,6 +916,8 @@
morespace:
neededspace = (ALIGN(sizeof(*cm)) + nfds * sizeof(struct file *)) -
control->m_len;
+ if (neededspace)
+ printf("unp_internalize: neededspace=%d\n", neededspace);
if (neededspace > M_TRAILINGSPACE(control)) {
/* if we already have a cluster, the message is just too big */
@@ -937,6 +939,22 @@
cm->cmsg_len += neededspace;
control->m_len = cm->cmsg_len;
+ if (neededspace) {
+ fdp = (int *)(cm + 1);
+ for (i = 0; i < nfds; i++) {
+ fd = *fdp++;
+ if ((unsigned)fd >= fdescp->fd_nfiles ||
+ fdescp->fd_ofiles[fd] == NULL) {
+ printf("unp_internalize: ERROR DETECTED (1)\n");
+ return (EBADF);
+ }
+ }
+ if ((cm->cmsg_len / sizeof(struct file *)) != nfds) {
+ printf("unp_internalize: ERROR DETECTED (2)\n");
+ return (EBADF);
+ }
+ }
+
/*
* Transform the file descriptors into struct file pointers, in
* reverse order so that if pointers are bigger than ints, the
diff -r da5823983086 -r 0997154cf3d8 sys/kern/vfs_subr.c
--- a/sys/kern/vfs_subr.c Wed Apr 21 02:03:24 1999 +0000
+++ b/sys/kern/vfs_subr.c Wed Apr 21 02:31:49 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_subr.c,v 1.100 1999/03/24 05:51:26 mrg Exp $ */
+/* $NetBSD: vfs_subr.c,v 1.101 1999/04/21 02:31:50 mrg Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -1472,6 +1472,10 @@
extern const int nmountcompatnames;
/*
+ * XXX
+ * This belongs in sys/compat/common/vfs_44.c
+ */
+/*
* Top level filesystem related information gathering.
*/
int
Home |
Main Index |
Thread Index |
Old Index