NAME
do_setresuid
,
do_setresgid
—
set process uid and gid
SYNOPSIS
#include
<sys/ucred.h>
int
do_setresuid
(struct
lwp *lwp, uid_t
ruid, uid_t euid,
uid_t svuid,
u_int flags);
int
do_setresgid
(struct
lwp *lwp, uid_t
ruid, uid_t euid,
uid_t svuid,
u_int flags);
DESCRIPTION
Thedo_setresuid
and
do_setresgid
functions are used to implement the
various system calls that allow a process to change its real, effective, and
saved uid and gid values.
The do_setresuid
function sets the
specified process's real user ID to ruid, its
effective user ID to euid, and its saved user ID to
svuid. If any of the uid arguments are -1 then that
assignment is skipped.
If
suser
() is
true, then any values may be assigned, otherwise the new uid values must
match one of the existing values and the caller must have set the relevant
bit in flags.
The flags argument specifies which of the existing uid values the new value must match. It should be set to a logical OR of ID_{R,E,S}_EQ_{R,E,S}, where ID_E_EQ_R means that it is valid to set the effective ID to the current value of the real ID.
The do_setresgid
function sets the group
IDs but otherwise behaves in the same manner as
do_setresuid
. The processes group list is neither
examined nor effected.
CODE REFERENCES
These functions are implemented in: sys/kern/kern_prot.c.
SEE ALSO
HISTORY
Implemented for NetBSD 2.0 to replace ad-hoc code in each system call routine and in the various compat modules.