Explorar o código

[LibOS] Test user pointer in pipe parser (used for debugging)

borysp %!s(int64=6) %!d(string=hai) anos
pai
achega
1939b76502
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      LibOS/shim/src/shim_parser.c

+ 4 - 0
LibOS/shim/src/shim_parser.c

@@ -793,6 +793,10 @@ static void parse_exec_envp(va_list ap) {
 static void parse_pipe_fds(va_list ap) {
     int* fds = va_arg(ap, int*);
 
+    if (test_user_memory(fds, 2 * sizeof(*fds), false)) {
+        PRINTF("[invalid-addr %p]", fds);
+        return;
+    }
     PRINTF("[%d, %d]", fds[0], fds[1]);
 }