priv: Define and use PRIV_VARSYM_SYS
authorMichael Neumann <mneumann@ntecs.de>
Sun, 12 Jul 2009 22:08:56 +0000 (00:08 +0200)
committerMichael Neumann <mneumann@ntecs.de>
Sun, 12 Jul 2009 22:08:56 +0000 (00:08 +0200)
sys/kern/kern_jail.c
sys/kern/kern_varsym.c
sys/sys/priv.h

index d2369ff..5a0852d 100644 (file)
@@ -698,6 +698,8 @@ prison_priv_check(struct ucred *cred, int priv)
 
        case PRIV_SYSCTL_WRITEJAIL:
 
+       case PRIV_VARSYM_SYS:
+
                return (0);
 
        case PRIV_UFS_QUOTAON:
index 56ff817..516b669 100644 (file)
@@ -153,7 +153,7 @@ sys_varsym_set(struct varsym_set_args *uap)
            uap->level = VARSYM_PRISON;
     case VARSYM_PRISON:
        if (p != NULL &&
-           (error = priv_check_cred(p->p_ucred, PRIV_ROOT, PRISON_ROOT)) != 0)
+           (error = priv_check_cred(p->p_ucred, PRIV_VARSYM_SYS, 0)) != 0)
            break;
        /* fall through */
     case VARSYM_USER:
index 3e4e7cb..65624ed 100644 (file)
@@ -85,6 +85,7 @@
 #define        PRIV_SETTIMEOFDAY       18      /* Can call settimeofday. */
 #define        PRIV_SETHOSTID          19      /* Can call sethostid. */
 #define        PRIV_SETDOMAINNAME      20      /* Can call setdomainname. */
+#define        PRIV_VARSYM_SYS         21      /* Can varsym_set(VARSYM_SYS, ...) */
 
 /*
  * Audit subsystem privileges.