From 114a770c6fb5fb9a269b3b662375e0811dfd37e9 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 12 Jan 2020 11:52:37 +0100 Subject: [PATCH] Kernel: Reduce pledge requirement for recvfrom()+sendto() to "stdio" Since these only operate on already-open sockets, we should treat them the same as we do read() and write() by putting them into "stdio". --- Kernel/Process.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 3b910d83aa..d661df64f1 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -3008,6 +3008,7 @@ int Process::sys$connect(int sockfd, const sockaddr* address, socklen_t address_ ssize_t Process::sys$sendto(const Syscall::SC_sendto_params* user_params) { + REQUIRE_PROMISE(stdio); if (!validate_read_typed(user_params)) return -EFAULT; @@ -3029,12 +3030,12 @@ ssize_t Process::sys$sendto(const Syscall::SC_sendto_params* user_params) return -ENOTSOCK; SmapDisabler disabler; auto& socket = *description->socket(); - REQUIRE_PROMISE_FOR_SOCKET_DOMAIN(socket.domain()); return socket.sendto(*description, params.data.data, params.data.size, flags, addr, addr_length); } ssize_t Process::sys$recvfrom(const Syscall::SC_recvfrom_params* user_params) { + REQUIRE_PROMISE(stdio); if (!validate_read_typed(user_params)) return -EFAULT; @@ -3062,7 +3063,6 @@ ssize_t Process::sys$recvfrom(const Syscall::SC_recvfrom_params* user_params) if (!description->is_socket()) return -ENOTSOCK; auto& socket = *description->socket(); - REQUIRE_PROMISE_FOR_SOCKET_DOMAIN(socket.domain()); bool original_blocking = description->is_blocking(); if (flags & MSG_DONTWAIT)