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.
This commit is contained in:
Sergey Bugaev 2020-05-15 12:05:44 +03:00 committed by Andreas Kling
parent 00c166e2ca
commit 752617cbb2
Notes: sideshowbarker 2024-07-19 06:38:23 +09:00

View File

@ -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;