]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for PM_SET{,E}GID
authorLionel Sambuc <lionel@minix3.org>
Tue, 13 May 2014 12:55:47 +0000 (14:55 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:37 +0000 (17:05 +0200)
Change-Id: I489d9290553b28361344e0cfd59c31e7e672c22c

include/minix/callnr.h
include/minix/ipc.h
lib/libc/sys-minix/setgid.c
servers/pm/getset.c

index c38fb14fac19c4771865f39d24d4d85b0f4b3c93..8cfc1fcf0eda24d8a9cb88c1a63d8c5113950335 100644 (file)
@@ -85,9 +85,6 @@
 #define PM_SIG_SET             m2_sigset /* sigset_t */
 #define PM_SIG_CTX             m2_p1   /* struct sigcontext * */
 
-/* Field names for the setgid(2)/setegid(2) calls. */
-#define PM_SETGID_GID          m1_i1   /* gid_t */
-
 /* Field names for the getppid(2) call. */
 #define PM_GETPID_PARENT       m2_i1   /* pid_t */
 
index 3789153d4ee4633a8b43a2f36ffec08c806f0d5b..9906261a121db2893cbd111fec387896a5302eaa 100644 (file)
@@ -195,6 +195,13 @@ typedef struct {
 } mess_lc_pm_reboot;
 _ASSERT_MSG_SIZE(mess_lc_pm_reboot);
 
+typedef struct {
+       gid_t gid;
+
+       uint8_t padding[52];
+} mess_lc_pm_setgid;
+_ASSERT_MSG_SIZE(mess_lc_pm_setgid);
+
 typedef struct {
        uid_t uid;
 
@@ -1041,6 +1048,7 @@ typedef struct {
                mess_lc_pm_priority     m_lc_pm_priority;
                mess_lc_pm_ptrace       m_lc_pm_ptrace;
                mess_lc_pm_reboot       m_lc_pm_reboot;
+               mess_lc_pm_setgid       m_lc_pm_setgid;
                mess_lc_pm_setuid       m_lc_pm_setuid;
                mess_lc_pm_sysuname     m_lc_pm_sysuname;
                mess_lc_pm_time         m_lc_pm_time;
index 269e0cdb6b9e9018022864ee695290404dd067fb..a34f8c9af18fda37d23ce80115e0bac2789f893e 100644 (file)
@@ -11,7 +11,7 @@ int setgid(gid_t grp)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_SETGID_GID = (int) grp;
+  m.m_lc_pm_setgid.gid = grp;
   return(_syscall(PM_PROC_NR, PM_SETGID, &m));
 }
 
@@ -20,6 +20,6 @@ int setegid(gid_t grp)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_SETGID_GID = (int) grp;
+  m.m_lc_pm_setgid.gid = grp;
   return(_syscall(PM_PROC_NR, PM_SETEGID, &m));
 }
index bc403976513b00d0151626c4bc46d51231410044..ac4f2f78cd0cf02a90c4187578ab0719f3341921 100644 (file)
@@ -123,7 +123,7 @@ int do_set()
 
        case PM_SETGID:
        case PM_SETEGID:
-               gid = (gid_t) m_in.PM_SETGID_GID;
+               gid = m_in.m_lc_pm_setgid.gid;
                if (rmp->mp_realgid != gid && rmp->mp_effuid != SUPER_USER)
                        return(EPERM);
                if(call_nr == PM_SETGID) rmp->mp_realgid = gid;