1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 12:27:35 +00:00

LibCore: Add Core::System::drop_privileges()

In a few places we intentionally drop privileges to reduce the potential
security surface area of networked program, with the pattern of:

```
if (setgid(getgid()) || setuid(getuid()) {
    return 1;
}
```

We can make this a bit nicer to use by creating a wrapper.
This commit is contained in:
Brian Gianforcaro 2022-03-21 00:05:42 -07:00 committed by Andreas Kling
parent 7403342387
commit 6eebd69b70
2 changed files with 12 additions and 0 deletions

View file

@ -726,6 +726,17 @@ ErrorOr<pid_t> setsid()
return rc;
}
ErrorOr<void> drop_privileges()
{
auto gid_result = setgid(getgid());
auto uid_result = setuid(getuid());
if (gid_result.is_error() || uid_result.is_error())
return Error::from_string_literal("Failed to drop privileges");
return {};
}
ErrorOr<bool> isatty(int fd)
{
int rc = ::isatty(fd);