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:
parent
00c166e2ca
commit
752617cbb2
Notes:
sideshowbarker
2024-07-19 06:38:23 +09:00
Author: https://github.com/bugaevc Commit: https://github.com/SerenityOS/serenity/commit/752617cbb20 Pull-request: https://github.com/SerenityOS/serenity/pull/2231
1 changed files with 4 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue