Explorar o código

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 %!s(int64=4) %!d(string=hai) anos
pai
achega
ca3489eec7
Modificáronse 1 ficheiros con 2 adicións e 4 borrados
  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())
         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();