From 2276fc95b8a598fabf6be6e624753755b976d345 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 10 Jul 2023 15:34:41 +0300 Subject: [PATCH] Kernel: creat() mode now has to be access mode We provide the S_IFREG in creat --- kernel/kernel/Process.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index e0ba3bac0..c769159e2 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -570,6 +570,11 @@ namespace Kernel BAN::ErrorOr Process::sys_creat(BAN::StringView path, mode_t mode) { + if ((mode & 0777) != mode) + return BAN::Error::from_errno(EINVAL); + + LockGuard _(m_lock); + auto absolute_path = TRY(absolute_path_of(path)); size_t index; @@ -581,7 +586,7 @@ namespace Kernel auto file_name = absolute_path.sv().substring(index); auto parent_file = TRY(VirtualFileSystem::get().file_from_absolute_path(m_credentials, directory, O_WRONLY)); - TRY(parent_file.inode->create_file(file_name, mode, m_credentials.euid(), m_credentials.egid())); + TRY(parent_file.inode->create_file(file_name, S_IFREG | mode, m_credentials.euid(), m_credentials.egid())); return 0; }