Преглед изворни кода

Kernel: Tighten up some promise checks

Since we're not keeping compatibility with OpenBSD about what promises are
required for which syscalls, tighten things up so that they make more sense.
Sergey Bugaev пре 5 година
родитељ
комит
05b7fec517
2 измењених фајлова са 5 додато и 10 уклоњено
  1. 5 5
      Kernel/Process.cpp
  2. 0 5
      Userland/hostname.cpp

+ 5 - 5
Kernel/Process.cpp

@@ -703,7 +703,7 @@ int Process::sys$gethostname(char* buffer, ssize_t size)
 
 int Process::sys$sethostname(const char* hostname, ssize_t length)
 {
-    REQUIRE_PROMISE(stdio);
+    REQUIRE_NO_PROMISES;
     if (!is_superuser())
         return -EPERM;
     if (length < 0)
@@ -2495,7 +2495,7 @@ KResultOr<siginfo_t> Process::do_waitid(idtype_t idtype, int id, int options)
 
 pid_t Process::sys$waitid(const Syscall::SC_waitid_params* user_params)
 {
-    REQUIRE_PROMISE(stdio);
+    REQUIRE_PROMISE(proc);
 
     Syscall::SC_waitid_params params;
     if (!validate_read_and_copy_typed(&params, user_params))
@@ -2545,7 +2545,7 @@ bool Process::validate_write(void* address, size_t size) const
 
 pid_t Process::sys$getsid(pid_t pid)
 {
-    REQUIRE_PROMISE(stdio);
+    REQUIRE_PROMISE(proc);
     if (pid == 0)
         return m_sid;
     InterruptDisabler disabler;
@@ -2576,7 +2576,7 @@ pid_t Process::sys$setsid()
 
 pid_t Process::sys$getpgid(pid_t pid)
 {
-    REQUIRE_PROMISE(stdio);
+    REQUIRE_PROMISE(proc);
     if (pid == 0)
         return m_pgid;
     InterruptDisabler disabler; // FIXME: Use a ProcessHandle
@@ -2677,7 +2677,7 @@ int Process::sys$dup2(int old_fd, int new_fd)
 
 int Process::sys$sigprocmask(int how, const sigset_t* set, sigset_t* old_set)
 {
-    REQUIRE_PROMISE(stdio);
+    REQUIRE_PROMISE(sigaction);
     if (old_set) {
         if (!validate_write_typed(old_set))
             return -EFAULT;

+ 0 - 5
Userland/hostname.cpp

@@ -31,11 +31,6 @@
 
 int main(int argc, char** argv)
 {
-    if (pledge("stdio", nullptr) < 0) {
-        perror("pledge");
-        return 1;
-    }
-
     if (argc == 1) {
       char buffer[HOST_NAME_MAX];
       int rc = gethostname(buffer, sizeof(buffer));