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