Ver código fonte

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.
Andreas Kling 4 anos atrás
pai
commit
ca3489eec7
1 arquivos alterados com 2 adições e 4 exclusões
  1. 2 4
      Kernel/FileSystem/VirtualFileSystem.cpp

+ 2 - 4
Kernel/FileSystem/VirtualFileSystem.cpp

@@ -389,10 +389,8 @@ KResultOr<NonnullRefPtr<FileDescription>> VFS::create(StringView path, int optio
     if (result.is_error())
     if (result.is_error())
         return result;
         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& parent_inode = parent_custody.inode();
     auto current_process = Process::current();
     auto current_process = Process::current();