From fb826aa59abd6e2baff6a8ebe1c749d1ddc04731 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 26 Apr 2020 15:51:57 +0200 Subject: [PATCH] Kernel: Make sys$sethostname() superuser-only Also take the hostname string lock exclusively. --- Kernel/Process.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index c81e9598ed..1ee32709f8 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -715,9 +715,11 @@ int Process::sys$gethostname(char* buffer, ssize_t size) int Process::sys$sethostname(const char* hostname, ssize_t length) { REQUIRE_PROMISE(stdio); + if (!is_superuser()) + return -EPERM; if (length < 0) return -EINVAL; - LOCKER(*s_hostname_lock, Lock::Mode::Shared); + LOCKER(*s_hostname_lock, Lock::Mode::Exclusive); if (length > 64) return -ENAMETOOLONG; *s_hostname = validate_and_copy_string_from_user(hostname, length);