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

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

index 9646a8e9becc2f399cb2596aba2f094ebf9fc673..c38fb14fac19c4771865f39d24d4d85b0f4b3c93 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 setuid(2)/seteuid(2) calls. */
-#define PM_SETUID_UID          m1_i1   /* uid_t */
-
 /* Field names for the setgid(2)/setegid(2) calls. */
 #define PM_SETGID_GID          m1_i1   /* gid_t */
 
index 9aebc8442efe88546aff15640939b94a1b5a32f8..3789153d4ee4633a8b43a2f36ffec08c806f0d5b 100644 (file)
@@ -195,6 +195,13 @@ typedef struct {
 } mess_lc_pm_reboot;
 _ASSERT_MSG_SIZE(mess_lc_pm_reboot);
 
+typedef struct {
+       uid_t uid;
+
+       uint8_t padding[52];
+} mess_lc_pm_setuid;
+_ASSERT_MSG_SIZE(mess_lc_pm_setuid);
+
 typedef struct {
        int req;
        int field;
@@ -1034,6 +1041,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_setuid       m_lc_pm_setuid;
                mess_lc_pm_sysuname     m_lc_pm_sysuname;
                mess_lc_pm_time         m_lc_pm_time;
                mess_lc_pm_waitpid      m_lc_pm_waitpid;
index 4732950b96eb0cd0251bfd51d14146c28c6ebe77..e14ad4ceda2d3d201eec404466a0476003d4056a 100644 (file)
@@ -10,7 +10,7 @@ int setuid(uid_t usr)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_SETUID_UID = usr;
+  m.m_lc_pm_setuid.uid = usr;
   return(_syscall(PM_PROC_NR, PM_SETUID, &m));
 }
 
@@ -19,6 +19,6 @@ int seteuid(uid_t usr)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_SETUID_UID = usr;
+  m.m_lc_pm_setuid.uid = usr;
   return(_syscall(PM_PROC_NR, PM_SETEUID, &m));
 }
index 6a0f0942641f78ad3c8f5ef6b7c3897443f0e353..bc403976513b00d0151626c4bc46d51231410044 100644 (file)
@@ -108,7 +108,7 @@ int do_set()
   switch(call_nr) {
        case PM_SETUID:
        case PM_SETEUID:
-               uid = (uid_t) m_in.PM_SETUID_UID;
+               uid = m_in.m_lc_pm_setuid.uid;
                if (rmp->mp_realuid != uid && rmp->mp_effuid != SUPER_USER)
                        return(EPERM);
                if(call_nr == PM_SETUID) rmp->mp_realuid = uid;