From 752617cbb2021aa52a9b822f7df17464a5f38fa5 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Fri, 15 May 2020 12:05:44 +0300 Subject: [PATCH] Kernel: Disallow opening socket files You can still open files that have sockets attached to them from inside the kernel via VFS::open() (and in fact, that is what LocalSocket itslef uses), but trying to do that from userspace using open() will now fail with ENXIO. --- Kernel/Process.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 38cd9237c2..b5cbae8776 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -2082,6 +2082,10 @@ int Process::sys$open(const Syscall::SC_open_params* user_params) if (result.is_error()) return result.error(); auto description = result.value(); + + if (description->inode() && description->inode()->socket()) + return -ENXIO; + u32 fd_flags = (options & O_CLOEXEC) ? FD_CLOEXEC : 0; m_fds[fd].set(move(description), fd_flags); return fd;