Pārlūkot izejas kodu

CEventLoop: Create the wake pipe with O_CLOEXEC

This ensures the pipe fds don't leak into child processes.
This manifested as the Shell (and all processes started
from the shell) having two mysterious FIFOs open. This
was happening because of the Terminal, which the shell
was spawned form, leaking its CEventLoop wake pipe fds.
Sergey Bugaev 6 gadi atpakaļ
vecāks
revīzija
211b51dab7
1 mainītis faili ar 1 papildinājumiem un 1 dzēšanām
  1. 1 1
      Libraries/LibCore/CEventLoop.cpp

+ 1 - 1
Libraries/LibCore/CEventLoop.cpp

@@ -36,7 +36,7 @@ CEventLoop::CEventLoop()
 
 
     if (!s_main_event_loop) {
     if (!s_main_event_loop) {
         s_main_event_loop = this;
         s_main_event_loop = this;
-        int rc = pipe(s_wake_pipe_fds);
+        int rc = pipe2(s_wake_pipe_fds, O_CLOEXEC);
         ASSERT(rc == 0);
         ASSERT(rc == 0);
         s_event_loop_stack->append(this);
         s_event_loop_stack->append(this);
     }
     }