Browse Source

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.
Andreas Kling 5 years ago
parent
commit
aa63de53bd
1 changed files with 7 additions and 6 deletions
  1. 7 6
      Kernel/Process.cpp

+ 7 - 6
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)