diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-04-03 16:20:57 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-04-03 16:20:57 -0400 |
commit | 1db283bf19c3e2a41345895b887a88aea086cb29 (patch) | |
tree | 1483efd8d5469c2985795d6c6db132e1a1d9e9be | |
parent | 7fd3995282db788e33f1bfd7eea95b480d45c804 (diff) | |
download | musl-1db283bf19c3e2a41345895b887a88aea086cb29.tar.gz musl-1db283bf19c3e2a41345895b887a88aea086cb29.tar.xz musl-1db283bf19c3e2a41345895b887a88aea086cb29.zip |
add setresuid/setresgid functions (nonstandard)
-rw-r--r-- | include/unistd.h | 2 | ||||
-rw-r--r-- | src/unistd/setresgid.c | 10 | ||||
-rw-r--r-- | src/unistd/setresuid.c | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/include/unistd.h b/include/unistd.h index a3561114..35df1cd5 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -154,6 +154,8 @@ int sethostname(const char *, size_t); int usleep(unsigned); unsigned ualarm(unsigned, unsigned); int setgroups(int, const gid_t []); +int setresuid(uid_t, uid_t, uid_t); +int setresgid(gid_t, gid_t, gid_t); #endif #define _XOPEN_VERSION 700 diff --git a/src/unistd/setresgid.c b/src/unistd/setresgid.c new file mode 100644 index 00000000..3c85a828 --- /dev/null +++ b/src/unistd/setresgid.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include <unistd.h> +#include "syscall.h" +#include "libc.h" + +int setresgid(gid_t rgid, gid_t egid, gid_t sgid) +{ + if (libc.rsyscall) return libc.rsyscall(__NR_setresgid, rgid, egid, sgid, 0, 0, 0); + return syscall(SYS_setresgid, rgid, egid, sgid); +} diff --git a/src/unistd/setresuid.c b/src/unistd/setresuid.c new file mode 100644 index 00000000..376ce406 --- /dev/null +++ b/src/unistd/setresuid.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include <unistd.h> +#include "syscall.h" +#include "libc.h" + +int setresuid(uid_t ruid, uid_t euid, uid_t suid) +{ + if (libc.rsyscall) return libc.rsyscall(__NR_setresuid, ruid, euid, suid, 0, 0, 0); + return syscall(SYS_setresuid, ruid, euid, suid); +} |