From aa63de53bd8b3f2f4047347834c6c814f12cd31a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Jan 2020 11:43:28 +0100 Subject: [PATCH] Kernel: Use get_syscall_path_argument() in sys$execve() Paths passed to sys$execve() should certainly be subject to all the usual path validation checks. --- Kernel/Process.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 114bd35c863..1dd119ecf51 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1114,12 +1114,13 @@ int Process::sys$execve(const Syscall::SC_execve_params* user_params) if (params.arguments.length > ARG_MAX || params.environment.length > ARG_MAX) return -E2BIG; - auto path = validate_and_copy_string_from_user(params.path); - if (path.is_null()) - return -EFAULT; - - if (path.is_empty()) - return -ENOENT; + String path; + { + auto path_arg = get_syscall_path_argument(params.path); + if (path_arg.is_error()) + return path_arg.error(); + path = path_arg.value(); + } auto copy_user_strings = [&](const auto& list, auto& output) { if (!list.length)