From 4ecac6067f6637b160f3beff775c43118e6b684a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 30 Nov 2011 15:18:29 +1100 Subject: [PATCH] runcmd: use set_close_on_exec() this prevents a fd leak to child processes Autobuild-User: Andrew Bartlett Autobuild-Date: Thu Dec 22 14:00:06 CET 2011 on sn-devel-104 --- lib/util/util_runcmd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/util/util_runcmd.c b/lib/util/util_runcmd.c index 8a475ef301..cc274c21d5 100644 --- a/lib/util/util_runcmd.c +++ b/lib/util/util_runcmd.c @@ -135,6 +135,10 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx, set_blocking(state->fd_stderr, false); set_blocking(state->fd_stdin, false); + smb_set_close_on_exec(state->fd_stdin); + smb_set_close_on_exec(state->fd_stdout); + smb_set_close_on_exec(state->fd_stderr); + talloc_set_destructor(state, samba_runcmd_state_destructor); state->fde_stdout = tevent_add_fd(ev, state, @@ -197,6 +201,10 @@ struct tevent_req *samba_runcmd_send(TALLOC_CTX *mem_ctx, dup2(p1[1], 1); dup2(p2[1], 2); + close(p1[1]); + close(p2[1]); + close(p3[0]); + argv = str_list_copy(state, discard_const_p(const char *, argv0)); if (!argv) { fprintf(stderr, "Out of memory in child\n"); -- 2.34.1