From 9184bbfef634f518b41a1de6c3f6901902246ccf Mon Sep 17 00:00:00 2001 From: apio Date: Fri, 5 May 2023 18:53:50 +0200 Subject: [PATCH] kernel: Disallow passing O_WRONLY and O_DIRECTORY at the same time --- kernel/src/sys/open.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/src/sys/open.cpp b/kernel/src/sys/open.cpp index b464daab..c85dfdb9 100644 --- a/kernel/src/sys/open.cpp +++ b/kernel/src/sys/open.cpp @@ -23,7 +23,10 @@ Result sys_openat(Registers*, SyscallArgs args) // Caller did not pass either O_RDONLY, O_WRONLY or O_RDWR if ((flags & O_RDWR) == 0) { return err(EINVAL); } - if ((flags & O_DIRECTORY) & (flags & O_CREAT)) return err(EINVAL); + if (flags & O_DIRECTORY) + { + if ((flags & O_WRONLY) || (flags & O_CREAT)) return err(EINVAL); + } int error; SharedPtr parent_inode;