Kernel/LibC: Add setsid()
This commit is contained in:
@@ -85,6 +85,7 @@ namespace Kernel
|
||||
|
||||
BAN::ErrorOr<long> sys_setuid(uid_t);
|
||||
BAN::ErrorOr<long> sys_setgid(gid_t);
|
||||
BAN::ErrorOr<long> sys_setsid();
|
||||
BAN::ErrorOr<long> sys_seteuid(uid_t);
|
||||
BAN::ErrorOr<long> sys_setegid(gid_t);
|
||||
BAN::ErrorOr<long> sys_setreuid(uid_t, uid_t);
|
||||
|
||||
@@ -2001,6 +2001,20 @@ namespace Kernel
|
||||
return BAN::Error::from_errno(EPERM);
|
||||
}
|
||||
|
||||
BAN::ErrorOr<long> Process::sys_setsid()
|
||||
{
|
||||
LockGuard _(m_process_lock);
|
||||
|
||||
if (is_session_leader() || m_pid == m_pgrp)
|
||||
return BAN::Error::from_errno(EPERM);
|
||||
|
||||
m_sid = m_pid;
|
||||
m_pgrp = m_pid;
|
||||
m_controlling_terminal.clear();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BAN::ErrorOr<long> Process::sys_seteuid(uid_t uid)
|
||||
{
|
||||
if (uid < 0 || uid >= 1'000'000'000)
|
||||
|
||||
Reference in New Issue
Block a user