>From 47f1a4009e869e844f0edf1fb0fe749463e8d7cc Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Thu, 17 Apr 2014 09:19:11 +0200 Subject: [PATCH] MONITOR: Fix start up with closed standard input Monitor does not read data from stdin. We should not monitor on stdin in this process. Resolves: https://fedorahosted.org/sssd/ticket/2312 --- src/monitor/monitor.c | 3 ++- src/providers/data_provider_be.c | 2 +- src/providers/proxy/proxy_child.c | 2 +- src/responder/autofs/autofssrv.c | 3 ++- src/responder/ifp/ifpsrv.c | 2 +- src/responder/nss/nsssrv.c | 2 +- src/responder/pac/pacsrv.c | 2 +- src/responder/pam/pamsrv.c | 2 +- src/responder/ssh/sshsrv.c | 2 +- src/responder/sudo/sudosrv.c | 3 ++- src/util/server.c | 9 ++++++--- src/util/util.h | 3 ++- 12 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index 845968dff1035d7f5f2f9bbf171fb987d7401532..e89fdcbeb78eb0a487574d1c694c773d3cda6a63 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -2834,7 +2834,8 @@ int main(int argc, const char *argv[]) /* set up things like debug , signals, daemonization, etc... */ monitor->conf_path = CONFDB_MONITOR_CONF_ENTRY; - ret = server_setup(MONITOR_NAME, flags, monitor->conf_path, &main_ctx); + ret = server_setup(MONITOR_NAME, flags, monitor->conf_path, &main_ctx, + false); if (ret != EOK) return 2; monitor->is_daemon = !opt_interactive; diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c index 5c2b480db4cec8bdd0d0dfc71f01885396f822fb..8ba5bd7d3ea1a7e043dfcb4b9fe8f773654385c1 100644 --- a/src/providers/data_provider_be.c +++ b/src/providers/data_provider_be.c @@ -2785,7 +2785,7 @@ int main(int argc, const char *argv[]) confdb_path = talloc_asprintf(NULL, CONFDB_DOMAIN_PATH_TMPL, be_domain); if (!confdb_path) return 2; - ret = server_setup(srv_name, 0, confdb_path, &main_ctx); + ret = server_setup(srv_name, 0, confdb_path, &main_ctx, true); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Could not set up mainloop [%d]\n", ret); return 2; diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c index 6bee1c7f63c4bb5b33f11601c2be32df05206756..8147e91e2521caa908135aa247bc64d25728b371 100644 --- a/src/providers/proxy/proxy_child.c +++ b/src/providers/proxy/proxy_child.c @@ -557,7 +557,7 @@ int main(int argc, const char *argv[]) conf_entry = talloc_asprintf(NULL, CONFDB_DOMAIN_PATH_TMPL, domain); if (!conf_entry) return 2; - ret = server_setup(srv_name, 0, conf_entry, &main_ctx); + ret = server_setup(srv_name, 0, conf_entry, &main_ctx, true); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Could not set up mainloop [%d]\n", ret); return 2; diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c index 9b5aa02dd53772a569da71a79e600dfa2ba5f1ef..f45a00fe102d19ebbeb03cd5b041ceb3cefcdee2 100644 --- a/src/responder/autofs/autofssrv.c +++ b/src/responder/autofs/autofssrv.c @@ -234,7 +234,8 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_autofs"; - ret = server_setup("sssd[autofs]", 0, CONFDB_AUTOFS_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[autofs]", 0, CONFDB_AUTOFS_CONF_ENTRY, &main_ctx, + true); if (ret != EOK) { return 2; } diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c index e76f3bdb0afb997ee2bbc0122199e127da34de84..5b259c364330403e96384cf66baa4c21b9416841 100644 --- a/src/responder/ifp/ifpsrv.c +++ b/src/responder/ifp/ifpsrv.c @@ -314,7 +314,7 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_ifp"; - ret = server_setup("sssd[ifp]", 0, CONFDB_IFP_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[ifp]", 0, CONFDB_IFP_CONF_ENTRY, &main_ctx, true); if (ret != EOK) return 2; ret = die_if_parent_died(); diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c index e4896a79dc8a15554cdb1a7616d5353650eca209..1e64d263a6f6ac56cc224a221b2df36747ee0461 100644 --- a/src/responder/nss/nsssrv.c +++ b/src/responder/nss/nsssrv.c @@ -558,7 +558,7 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_nss"; - ret = server_setup("sssd[nss]", 0, CONFDB_NSS_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[nss]", 0, CONFDB_NSS_CONF_ENTRY, &main_ctx, true); if (ret != EOK) return 2; ret = die_if_parent_died(); diff --git a/src/responder/pac/pacsrv.c b/src/responder/pac/pacsrv.c index bff15058a2092677441812c73117387afd125600..7937e03e2a8864213a794151a24444a548a364ce 100644 --- a/src/responder/pac/pacsrv.c +++ b/src/responder/pac/pacsrv.c @@ -243,7 +243,7 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_pac"; - ret = server_setup("sssd[pac]", 0, CONFDB_PAC_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[pac]", 0, CONFDB_PAC_CONF_ENTRY, &main_ctx, true); if (ret != EOK) return 2; ret = die_if_parent_died(); diff --git a/src/responder/pam/pamsrv.c b/src/responder/pam/pamsrv.c index 2823f01a0c15c5c468c5b1177c1c3b2844c25e4c..548d0b9788592071fbd327b10dc67e45305f3114 100644 --- a/src/responder/pam/pamsrv.c +++ b/src/responder/pam/pamsrv.c @@ -249,7 +249,7 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_pam"; - ret = server_setup("sssd[pam]", 0, CONFDB_PAM_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[pam]", 0, CONFDB_PAM_CONF_ENTRY, &main_ctx, true); if (ret != EOK) return 2; ret = die_if_parent_died(); diff --git a/src/responder/ssh/sshsrv.c b/src/responder/ssh/sshsrv.c index 30142ae0d8f57f86c76dd85f25020b599d90bbdf..94ec81425e995c68456bb42a085b110a6b1f1bbb 100644 --- a/src/responder/ssh/sshsrv.c +++ b/src/responder/ssh/sshsrv.c @@ -211,7 +211,7 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_ssh"; - ret = server_setup("sssd[ssh]", 0, CONFDB_SSH_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[ssh]", 0, CONFDB_SSH_CONF_ENTRY, &main_ctx, true); if (ret != EOK) { return 2; } diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c index a70d944a9e06a3236c85aff56c06c39b6888dac0..798f03fea4a6234b0c3f517657a7c216ff2f804a 100644 --- a/src/responder/sudo/sudosrv.c +++ b/src/responder/sudo/sudosrv.c @@ -193,7 +193,8 @@ int main(int argc, const char *argv[]) /* set up things like debug, signals, daemonization, etc... */ debug_log_file = "sssd_sudo"; - ret = server_setup("sssd[sudo]", 0, CONFDB_SUDO_CONF_ENTRY, &main_ctx); + ret = server_setup("sssd[sudo]", 0, CONFDB_SUDO_CONF_ENTRY, &main_ctx, + true); if (ret != EOK) { return 2; } diff --git a/src/util/server.c b/src/util/server.c index 24c3548ed32112a55e1b69202da3e7ff88bb0f15..68bc4370c96acabaf559664d253034e93aa5a7bc 100644 --- a/src/util/server.c +++ b/src/util/server.c @@ -379,7 +379,8 @@ static void te_server_hup(struct tevent_context *ev, int server_setup(const char *name, int flags, const char *conf_entry, - struct main_context **main_ctx) + struct main_context **main_ctx, + bool need_stdin) { struct tevent_context *event_ctx; struct main_context *ctx; @@ -573,8 +574,10 @@ int server_setup(const char *name, int flags, #ifdef SIGTTIN signal(SIGTTIN, SIG_IGN); #endif - tevent_add_fd(event_ctx, event_ctx, 0, stdin_event_flags, - server_stdin_handler, discard_const(name)); + if (need_stdin) { + tevent_add_fd(event_ctx, event_ctx, 0, stdin_event_flags, + server_stdin_handler, discard_const(name)); + } *main_ctx = ctx; return EOK; diff --git a/src/util/util.h b/src/util/util.h index c74ff5b56fdcb362386e4bb01bd293d7e3bf42a1..e6c8eb73476549e5719b40b0b23150ea34adf7a2 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -228,7 +228,8 @@ int die_if_parent_died(void); int pidfile(const char *path, const char *name); int server_setup(const char *name, int flags, const char *conf_entry, - struct main_context **main_ctx); + struct main_context **main_ctx, + bool need_stdin); void server_loop(struct main_context *main_ctx); void orderly_shutdown(int status); -- 1.9.0