Kernel: Add SYS_GET_{,E}{UID,GID}
This commit is contained in:
@@ -65,6 +65,11 @@ namespace Kernel
|
||||
BAN::ErrorOr<void> set_reuid(uid_t, uid_t);
|
||||
BAN::ErrorOr<void> set_regid(gid_t, gid_t);
|
||||
|
||||
uid_t get_uid() const { return m_credentials.ruid(); }
|
||||
gid_t get_gid() const { return m_credentials.rgid(); }
|
||||
uid_t get_euid() const { return m_credentials.euid(); }
|
||||
gid_t get_egid() const { return m_credentials.egid(); }
|
||||
|
||||
BAN::ErrorOr<int> open(BAN::StringView, int);
|
||||
BAN::ErrorOr<int> openat(int, BAN::StringView, int);
|
||||
BAN::ErrorOr<void> close(int fd);
|
||||
|
||||
@@ -208,6 +208,26 @@ namespace Kernel
|
||||
return 0;
|
||||
}
|
||||
|
||||
long sys_get_uid()
|
||||
{
|
||||
return Process::current().get_uid();
|
||||
}
|
||||
|
||||
long sys_get_gid()
|
||||
{
|
||||
return Process::current().get_gid();
|
||||
}
|
||||
|
||||
long sys_get_euid()
|
||||
{
|
||||
return Process::current().get_euid();
|
||||
}
|
||||
|
||||
long sys_get_egid()
|
||||
{
|
||||
return Process::current().get_egid();
|
||||
}
|
||||
|
||||
extern "C" long sys_fork_trampoline();
|
||||
|
||||
extern "C" long cpp_syscall_handler(int syscall, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
|
||||
@@ -303,6 +323,18 @@ namespace Kernel
|
||||
case SYS_SET_REGID:
|
||||
ret = sys_set_regid((gid_t)arg1, (gid_t)arg2);
|
||||
break;
|
||||
case SYS_GET_UID:
|
||||
ret = sys_get_uid();
|
||||
break;
|
||||
case SYS_GET_GID:
|
||||
ret = sys_get_gid();
|
||||
break;
|
||||
case SYS_GET_EUID:
|
||||
ret = sys_get_euid();
|
||||
break;
|
||||
case SYS_GET_EGID:
|
||||
ret = sys_get_egid();
|
||||
break;
|
||||
default:
|
||||
dwarnln("Unknown syscall {}", syscall);
|
||||
ret = -ENOSYS;
|
||||
|
||||
Reference in New Issue
Block a user