From 0f5221568b3aef8f7c7bdc4cc85b7bec0e00759b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 25 Jan 2020 12:20:29 +0100 Subject: [PATCH] Kernel: sys$execve() should not EFAULT for empty argument strings It's okay to exec { "/bin/echo", "" } and it should not EFAULT. --- Kernel/Process.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index d774d8b191..c92565c89f 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1159,6 +1159,10 @@ int Process::sys$execve(const Syscall::SC_execve_params* user_params) strings.resize(list.length); copy_from_user(strings.data(), list.strings, list.length * sizeof(Syscall::StringArgument)); for (size_t i = 0; i < list.length; ++i) { + if (strings[i].length == 0) { + output.append(String::empty()); + continue; + } if (!validate_read(strings[i].characters, strings[i].length)) return false; output.append(copy_string_from_user(strings[i].characters, strings[i].length));