diff options
author | Willy Tarreau <w@1wt.eu> | 2023-03-04 15:28:40 +0100 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2023-03-20 08:45:22 -0700 |
commit | 919d0532d48ca1bea62bc04f269b9e72706467c6 (patch) | |
tree | 2ecc98176b90d1d143a3be6ffa388bcc27f8efed /tools/include | |
parent | d1209597ff00b6a3c80e37089f7139d0774034bd (diff) |
tools/nolibc: add getuid() and geteuid()
This can be useful to avoid attempting some privileged operations,
starting from the nolibc-test tool that gets two failures when not
privileged.
We call getuid32() and geteuid32() when they are defined, and fall
back to getuid() and geteuid() otherwise.
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/include')
-rw-r--r-- | tools/include/nolibc/sys.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index b5f8cd35c03b..115579e7f1db 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -411,6 +411,27 @@ int getdents64(int fd, struct linux_dirent64 *dirp, int count) /* + * uid_t geteuid(void); + */ + +static __attribute__((unused)) +uid_t sys_geteuid(void) +{ +#ifdef __NR_geteuid32 + return my_syscall0(__NR_geteuid32); +#else + return my_syscall0(__NR_geteuid); +#endif +} + +static __attribute__((unused)) +uid_t geteuid(void) +{ + return sys_geteuid(); +} + + +/* * pid_t getpgid(pid_t pid); */ @@ -545,6 +566,27 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) /* + * uid_t getuid(void); + */ + +static __attribute__((unused)) +uid_t sys_getuid(void) +{ +#ifdef __NR_getuid32 + return my_syscall0(__NR_getuid32); +#else + return my_syscall0(__NR_getuid); +#endif +} + +static __attribute__((unused)) +uid_t getuid(void) +{ + return sys_getuid(); +} + + +/* * int ioctl(int fd, unsigned long req, void *value); */ |