From a6f237a247886ff9e1cb03ae15cd797e452355f1 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sat, 9 Jul 2022 22:26:58 +0300 Subject: [PATCH] Kernel: Accept SHUT_RD and SHUT_WR as shutdown() how values The previous check for valid how values assumed this field was a bitmap and that SHUT_RDWR was simply a bitwise or of SHUT_RD and SHUT_WR, which is not the case. --- Kernel/Syscalls/socket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Syscalls/socket.cpp b/Kernel/Syscalls/socket.cpp index 4e2247673e..c3a3c859eb 100644 --- a/Kernel/Syscalls/socket.cpp +++ b/Kernel/Syscalls/socket.cpp @@ -160,7 +160,7 @@ ErrorOr Process::sys$shutdown(int sockfd, int how) { VERIFY_NO_PROCESS_BIG_LOCK(this) TRY(require_promise(Pledge::stdio)); - if (how & ~SHUT_RDWR) + if (how != SHUT_RD && how != SHUT_WR && how != SHUT_RDWR) return EINVAL; auto description = TRY(open_file_description(sockfd)); if (!description->is_socket())