seteuid() and setegid()

This commit is contained in:
Ben Gras
2005-12-13 09:48:29 +00:00
parent f18384d54c
commit f6e5052597
10 changed files with 41 additions and 6 deletions
+2
View File
@@ -108,6 +108,8 @@ PUBLIC _PROTOTYPE (int (*call_vec[]), (void) ) = {
no_sys, /* 88 = getpriority */
no_sys, /* 89 = setpriority */
no_sys, /* 90 = gettimeofday */
no_sys, /* 91 = seteuid */
no_sys, /* 92 = setegid */
};
/* This should not fail with "array size is negative": */
extern int dummy[sizeof(call_vec) == NCALLS * sizeof(call_vec[0]) ? 1 : -1];
+4 -2
View File
@@ -42,21 +42,23 @@ PUBLIC int do_getset()
rmp->mp_reply.reply_res3 = mproc[m_in.procnr].mp_pid;
break;
case SETEUID:
case SETUID:
if (rmp->mp_realuid != (uid_t) m_in.usr_id &&
rmp->mp_effuid != SUPER_USER)
return(EPERM);
rmp->mp_realuid = (uid_t) m_in.usr_id;
if(call_nr == SETUID) rmp->mp_realuid = (uid_t) m_in.usr_id;
rmp->mp_effuid = (uid_t) m_in.usr_id;
tell_fs(SETUID, who, rmp->mp_realuid, rmp->mp_effuid);
r = OK;
break;
case SETEGID:
case SETGID:
if (rmp->mp_realgid != (gid_t) m_in.grp_id &&
rmp->mp_effuid != SUPER_USER)
return(EPERM);
rmp->mp_realgid = (gid_t) m_in.grp_id;
if(call_nr == SETGID) rmp->mp_realgid = (gid_t) m_in.grp_id;
rmp->mp_effgid = (gid_t) m_in.grp_id;
tell_fs(SETGID, who, rmp->mp_realgid, rmp->mp_effgid);
r = OK;
+2
View File
@@ -107,6 +107,8 @@ _PROTOTYPE (int (*call_vec[NCALLS]), (void) ) = {
do_getsetpriority, /* 88 = getpriority */
do_getsetpriority, /* 89 = setpriority */
do_time, /* 90 = gettimeofday */
do_getset, /* 91 = seteuid */
do_getset /* 92 = setegid */
};
/* This should not fail with "array size is negative": */
extern int dummy[sizeof(call_vec) == NCALLS * sizeof(call_vec[0]) ? 1 : -1];