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.
This commit is contained in:
Andreas Kling 2020-01-18 11:43:28 +01:00
parent 545e2ba065
commit aa63de53bd
Notes: sideshowbarker 2024-07-19 09:59:03 +09:00

View File

@ -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)