Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys In the KERN_GETPROC* handler:



details:   https://anonhg.NetBSD.org/src/rev/668b5e929c34
branches:  trunk
changeset: 487807:668b5e929c34
user:      simonb <simonb%NetBSD.org@localhost>
date:      Tue Jun 13 01:27:00 2000 +0000

description:
In the KERN_GETPROC* handler:
* Handle KERN_PROC_SESSION that has been defined in <sys/sysctl.h> from
  day one.
* Add handlers for KERN_PROC_GID and KERN_PROC_RGID.
* If "op" doesn't valid, return EINVAL.

diffstat:

 sys/kern/kern_sysctl.c |  25 ++++++++++++++++++-
 sys/sys/sysctl.h       |  64 +++++++++++++++++++++++++------------------------
 2 files changed, 57 insertions(+), 32 deletions(-)

diffs (190 lines):

diff -r 312905590e74 -r 668b5e929c34 sys/kern/kern_sysctl.c
--- a/sys/kern/kern_sysctl.c    Tue Jun 13 01:21:52 2000 +0000
+++ b/sys/kern/kern_sysctl.c    Tue Jun 13 01:27:00 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern_sysctl.c,v 1.70 2000/06/03 20:42:42 thorpej Exp $ */
+/*     $NetBSD: kern_sysctl.c,v 1.71 2000/06/13 01:27:00 simonb Exp $  */
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -1220,6 +1220,11 @@
                                continue;
                        break;
 
+               case KERN_PROC_SESSION:
+                       if (p->p_session->s_sid != (pid_t)arg)
+                               continue;
+                       break;
+
                case KERN_PROC_TTY:
                        if (arg == KERN_PROC_TTY_REVOKE) {
                                if ((p->p_flag & P_CONTROLT) == 0 ||
@@ -1243,6 +1248,24 @@
                        if (p->p_cred->p_ruid != (uid_t)arg)
                                continue;
                        break;
+
+               case KERN_PROC_GID:
+                       if (p->p_ucred->cr_gid != (uid_t)arg)
+                               continue;
+                       break;
+
+               case KERN_PROC_RGID:
+                       if (p->p_cred->p_rgid != (uid_t)arg)
+                               continue;
+                       break;
+
+               case KERN_PROC_ALL:
+                       /* allow everything */
+                       break;
+
+               default:
+                       error = EINVAL;
+                       goto cleanup;
                }
                if (type == KERN_PROC) {
                        if (buflen >= sizeof(struct kinfo_proc)) {
diff -r 312905590e74 -r 668b5e929c34 sys/sys/sysctl.h
--- a/sys/sys/sysctl.h  Tue Jun 13 01:21:52 2000 +0000
+++ b/sys/sys/sysctl.h  Tue Jun 13 01:27:00 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sysctl.h,v 1.49 2000/06/03 04:15:43 simonb Exp $       */
+/*     $NetBSD: sysctl.h,v 1.50 2000/06/13 01:27:02 simonb Exp $       */
 
 /*
  * Copyright (c) 1989, 1993
@@ -60,7 +60,7 @@
  * respective subsystem header files.
  */
 
-#define CTL_MAXNAME    12      /* largest number of components supported */
+#define        CTL_MAXNAME     12      /* largest number of components supported */
 
 /*
  * Each subsystem defined by sysctl defines a list of variables
@@ -95,7 +95,7 @@
 #define        CTL_PROC        10              /* per-proc attr */
 #define        CTL_MAXID       11              /* number of valid top-level ids */
 
-#define CTL_NAMES { \
+#define        CTL_NAMES { \
        { 0, 0 }, \
        { "kern", CTLTYPE_NODE }, \
        { "vm", CTLTYPE_NODE }, \
@@ -135,11 +135,11 @@
 #define        KERN_BOOTTIME           21      /* struct: time kernel was booted */
 #define        KERN_DOMAINNAME         22      /* string: (YP) domainname */
 #define        KERN_MAXPARTITIONS      23      /* int: number of partitions/disk */
-#define KERN_RAWPARTITION      24      /* int: raw partition number */
+#define        KERN_RAWPARTITION       24      /* int: raw partition number */
 #define        KERN_NTPTIME            25      /* struct: extended-precision time */
 #define        KERN_TIMEX              26      /* struct: ntp timekeeping state */
-#define KERN_AUTONICETIME      27      /* int: proc time before autonice */
-#define KERN_AUTONICEVAL       28      /* int: auto nice value */
+#define        KERN_AUTONICETIME       27      /* int: proc time before autonice */
+#define        KERN_AUTONICEVAL        28      /* int: auto nice value */
 #define        KERN_RTC_OFFSET         29      /* int: offset of rtc from gmt */
 #define        KERN_ROOT_DEVICE        30      /* string: root device */
 #define        KERN_MSGBUFSIZE         31      /* int: max # of chars in msg buffer */
@@ -166,7 +166,7 @@
 #define        KERN_SYSVIPC_INFO       52      /* number of valid kern ids */
 #define        KERN_MAXID              53      /* number of valid kern ids */
 
-#define CTL_KERN_NAMES { \
+#define        CTL_KERN_NAMES { \
        { 0, 0 }, \
        { "ostype", CTLTYPE_STRING }, \
        { "osrelease", CTLTYPE_STRING }, \
@@ -225,13 +225,15 @@
 /*
  * KERN_PROC subtypes
  */
-#define KERN_PROC_ALL          0       /* everything */
-#define        KERN_PROC_PID           1       /* by process id */
-#define        KERN_PROC_PGRP          2       /* by process group id */
-#define        KERN_PROC_SESSION       3       /* by session of pid */
-#define        KERN_PROC_TTY           4       /* by controlling tty */
-#define        KERN_PROC_UID           5       /* by effective uid */
-#define        KERN_PROC_RUID          6       /* by real uid */
+#define        KERN_PROC_ALL            0      /* everything */
+#define        KERN_PROC_PID            1      /* by process id */
+#define        KERN_PROC_PGRP           2      /* by process group id */
+#define        KERN_PROC_SESSION        3      /* by session of pid */
+#define        KERN_PROC_TTY            4      /* by controlling tty */
+#define        KERN_PROC_UID            5      /* by effective uid */
+#define        KERN_PROC_RUID           6      /* by real uid */
+#define        KERN_PROC_GID            7      /* by effective gid */
+#define        KERN_PROC_RGID           8      /* by real gid */
 
 /*
  * KERN_PROC_TTY sub-subtypes
@@ -427,7 +429,7 @@
 #define        HW_ALIGNBYTES   11              /* int: ALIGNBYTES for the kernel */
 #define        HW_MAXID        12              /* number of valid hw ids */
 
-#define CTL_HW_NAMES { \
+#define        CTL_HW_NAMES { \
        { 0, 0 }, \
        { "machine", CTLTYPE_STRING }, \
        { "model", CTLTYPE_STRING }, \
@@ -528,13 +530,13 @@
  * CTL_PROC subtype. Either a PID, or a magic value for the current proc.
  */
 
-#define PROC_CURPROC   (~((u_int)1 << 31))
+#define        PROC_CURPROC    (~((u_int)1 << 31))
 
 /*
  * CTL_PROC tree: either corename (string), or a limit
  * (rlimit.<type>.{hard,soft}, int).
  */
-#define PROC_PID_CORENAME      1
+#define        PROC_PID_CORENAME       1
 #define        PROC_PID_LIMIT          2
 #define        PROC_PID_MAXID          3
 
@@ -545,18 +547,18 @@
 }
 
 /* Limit types from <sys/resources.h> */
-#define PROC_PID_LIMIT_CPU     (RLIMIT_CPU+1)
-#define PROC_PID_LIMIT_FSIZE   (RLIMIT_FSIZE+1)
-#define PROC_PID_LIMIT_DATA    (RLIMIT_DATA+1)
-#define PROC_PID_LIMIT_STACK   (RLIMIT_STACK+1)
-#define PROC_PID_LIMIT_CORE    (RLIMIT_CORE+1)
-#define PROC_PID_LIMIT_RSS     (RLIMIT_RSS+1)
-#define PROC_PID_LIMIT_MEMLOCK (RLIMIT_MEMLOCK+1)
+#define        PROC_PID_LIMIT_CPU      (RLIMIT_CPU+1)
+#define        PROC_PID_LIMIT_FSIZE    (RLIMIT_FSIZE+1)
+#define        PROC_PID_LIMIT_DATA     (RLIMIT_DATA+1)
+#define        PROC_PID_LIMIT_STACK    (RLIMIT_STACK+1)
+#define        PROC_PID_LIMIT_CORE     (RLIMIT_CORE+1)
+#define        PROC_PID_LIMIT_RSS      (RLIMIT_RSS+1)
+#define        PROC_PID_LIMIT_MEMLOCK  (RLIMIT_MEMLOCK+1)
 #define PROC_PID_LIMIT_NPROC   (RLIMIT_NPROC+1)
-#define PROC_PID_LIMIT_NOFILE  (RLIMIT_NOFILE+1)
-#define PROC_PID_LIMIT_MAXID   10
+#define        PROC_PID_LIMIT_NOFILE   (RLIMIT_NOFILE+1)
+#define        PROC_PID_LIMIT_MAXID    10
 
-#define PROC_PID_LIMIT_NAMES { \
+#define        PROC_PID_LIMIT_NAMES { \
        { 0, 0 }, \
        { "cputime", CTLTYPE_NODE }, \
        { "filesize", CTLTYPE_NODE }, \
@@ -569,11 +571,11 @@
        { "descriptors", CTLTYPE_NODE }, \
 }
 /* for each type, either hard or soft value */
-#define PROC_PID_LIMIT_TYPE_SOFT       1
-#define PROC_PID_LIMIT_TYPE_HARD       2
-#define PROC_PID_LIMIT_TYPE_MAXID      3
+#define        PROC_PID_LIMIT_TYPE_SOFT        1
+#define        PROC_PID_LIMIT_TYPE_HARD        2
+#define        PROC_PID_LIMIT_TYPE_MAXID       3
 
-#define PROC_PID_LIMIT_TYPE_NAMES { \
+#define        PROC_PID_LIMIT_TYPE_NAMES { \
        {0, 0}, \
        { "soft", CTLTYPE_QUAD }, \
        { "hard", CTLTYPE_QUAD }, \



Home | Main Index | Thread Index | Old Index