
For setreuid and setresuid syscalls, -1 means to set the current uid/euid/gid/egid value, to be more convenient for programming. However, for other syscalls where we pass only one argument, there's no justification to specify -1. This behavior is identical to how Linux handles the value -1, and is influenced by the fact that the manual pages for the group of one argument syscalls that handle ID operations is ambiguous about this topic.
915 B
915 B
Name
setuid, setgid - set user / group ID
Synopsis
#include <unistd.h>
int setuid(uid_t);
int setgid(gid_t);
Description
Sets all of real, effective, and saved user or group ID to the given ID.
For non-superusers, the given ID has to be equal to the current real or effective ID for the call to succeed.
Return value
If the call was set successful, returns 0.
Otherwise, returns -1 and sets errno
to describe the error.
Errors
EPERM
: The new ID is not equal to the real ID or effective ID, and the user is not superuser.EINVAL
: The new ID is set to invalid value (-1).