From b7a82fd895c91190b248ca7496c3c45550647265 Mon Sep 17 00:00:00 2001 From: apio Date: Sat, 17 Jun 2023 12:04:34 +0200 Subject: [PATCH] kernel: Do not error out on zero-length reads/writes to bad addresses --- kernel/src/sys/file.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/src/sys/file.cpp b/kernel/src/sys/file.cpp index 3838af14..cc97aaf5 100644 --- a/kernel/src/sys/file.cpp +++ b/kernel/src/sys/file.cpp @@ -16,6 +16,8 @@ Result sys_read(Registers*, SyscallArgs args) u8* buf = (u8*)args[1]; usize size = (usize)args[2]; + if (!size) return 0; + if (!MemoryManager::validate_user_write(buf, size)) return err(EFAULT); Thread* current = Scheduler::current(); @@ -44,6 +46,8 @@ Result sys_write(Registers*, SyscallArgs args) const u8* buf = (const u8*)args[1]; usize size = (usize)args[2]; + if (!size) return 0; + if (!MemoryManager::validate_user_read(buf, size)) return err(EFAULT); Thread* current = Scheduler::current();