diff options
Diffstat (limited to 'source4/smbd')
-rw-r--r-- | source4/smbd/process_standard.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source4/smbd/process_standard.c b/source4/smbd/process_standard.c index c5377b34e08..cbc63b6db1a 100644 --- a/source4/smbd/process_standard.c +++ b/source4/smbd/process_standard.c @@ -34,7 +34,7 @@ NTSTATUS process_model_standard_init(void); /* we hold a pipe open in the parent, and the any child processes wait for EOF on that pipe. This ensures that children die when the parent dies */ -static int child_pipe[2]; +static int child_pipe[2] = { -1, -1 }; /* called when the process model is selected @@ -112,7 +112,10 @@ static void standard_accept_connection(struct tevent_context *ev, tevent_add_fd(ev, ev, child_pipe[0], TEVENT_FD_READ, standard_pipe_handler, NULL); - close(child_pipe[1]); + if (child_pipe[1] != -1) { + close(child_pipe[1]); + child_pipe[1] = -1; + } /* Ensure that the forked children do not expose identical random streams */ set_need_random_reseed(); @@ -170,7 +173,10 @@ static void standard_new_task(struct tevent_context *ev, tevent_add_fd(ev, ev, child_pipe[0], TEVENT_FD_READ, standard_pipe_handler, NULL); - close(child_pipe[1]); + if (child_pipe[1] != -1) { + close(child_pipe[1]); + child_pipe[1] = -1; + } /* Ensure that the forked children do not expose identical random streams */ set_need_random_reseed(); |