From ca3489eec7c1c7910407c4872ed6d70c92ce50cf Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 23 Jan 2021 16:42:50 +0100 Subject: [PATCH] Kernel: Make VFS::create() fail with EINVAL on invalid file mode Instead of trying to fix up the mode to look like a regular file, just fail instead. --- Kernel/FileSystem/VirtualFileSystem.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 25029dc021..aa7b94571a 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -389,10 +389,8 @@ KResultOr> VFS::create(StringView path, int optio if (result.is_error()) return result; - if (!is_socket(mode) && !is_fifo(mode) && !is_block_device(mode) && !is_character_device(mode)) { - // Turn it into a regular file. (This feels rather hackish.) - mode |= 0100000; - } + if (!is_regular_file(mode) && !is_socket(mode) && !is_fifo(mode) && !is_block_device(mode) && !is_character_device(mode)) + return EINVAL; auto& parent_inode = parent_custody.inode(); auto current_process = Process::current();