LibCore: Add syscall wrappers for setuid/seteuid/setgid/setegid

This commit is contained in:
Andreas Kling 2021-12-16 19:17:44 +01:00
parent 8bb9fe63b7
commit 2c3699e257
Notes: sideshowbarker 2024-07-17 22:42:04 +09:00
2 changed files with 32 additions and 0 deletions

View File

@ -388,4 +388,32 @@ ErrorOr<pid_t> waitpid(pid_t waitee, int* wstatus, int options)
return pid;
}
ErrorOr<void> setuid(uid_t uid)
{
if (::setuid(uid) < 0)
return Error::from_syscall("setuid"sv, -errno);
return {};
}
ErrorOr<void> seteuid(uid_t uid)
{
if (::setuid(uid) < 0)
return Error::from_syscall("seteuid"sv, -errno);
return {};
}
ErrorOr<void> setgid(gid_t gid)
{
if (::setgid(gid) < 0)
return Error::from_syscall("setgid"sv, -errno);
return {};
}
ErrorOr<void> setegid(gid_t gid)
{
if (::setgid(gid) < 0)
return Error::from_syscall("setegid"sv, -errno);
return {};
}
}

View File

@ -55,5 +55,9 @@ ErrorOr<struct group> getgrnam(StringView name);
ErrorOr<void> clock_settime(clockid_t clock_id, struct timespec* ts);
ErrorOr<pid_t> posix_spawnp(StringView const path, posix_spawn_file_actions_t* const file_actions, posix_spawnattr_t* const attr, char* const arguments[], char* const envp[]);
ErrorOr<pid_t> waitpid(pid_t waitee, int* wstatus, int options);
ErrorOr<void> setuid(uid_t);
ErrorOr<void> seteuid(uid_t);
ErrorOr<void> setgid(gid_t);
ErrorOr<void> setegid(gid_t);
}