mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-27 14:58:46 +00:00
This patch adds a new object to hold a Process's user credentials: - UID, EUID, SUID - GID, EGID, SGID, extra GIDs Credentials are immutable and child processes initially inherit the Credentials object from their parent. Whenever a process changes one or more of its user/group IDs, a new Credentials object is constructed. Any code that wants to inspect and act on a set of credentials can now do so without worrying about data races.
30 lines
816 B
C++
30 lines
816 B
C++
/*
|
|
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <Kernel/FileSystem/InodeMetadata.h>
|
|
#include <Kernel/Process.h>
|
|
|
|
namespace Kernel {
|
|
|
|
bool InodeMetadata::may_read(Process const& process) const
|
|
{
|
|
auto credentials = process.credentials();
|
|
return may_read(credentials->euid(), credentials->egid(), credentials->extra_gids());
|
|
}
|
|
|
|
bool InodeMetadata::may_write(Process const& process) const
|
|
{
|
|
auto credentials = process.credentials();
|
|
return may_write(credentials->euid(), credentials->egid(), credentials->extra_gids());
|
|
}
|
|
|
|
bool InodeMetadata::may_execute(Process const& process) const
|
|
{
|
|
auto credentials = process.credentials();
|
|
return may_execute(credentials->euid(), credentials->egid(), credentials->extra_gids());
|
|
}
|
|
|
|
}
|