Ver código fonte

Kernel: sys$execve() should not EFAULT for empty argument strings

It's okay to exec { "/bin/echo", "" } and it should not EFAULT.
Andreas Kling 5 anos atrás
pai
commit
0f5221568b
1 arquivos alterados com 4 adições e 0 exclusões
  1. 4 0
      Kernel/Process.cpp

+ 4 - 0
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));