From 1d3b19b1ecd3b10f36e8925e8a752a28e3e74b56 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Sat, 4 Oct 2014 21:50:57 +0200 Subject: Block signals sooner to avoid race conditions --- nslcd/nslcd.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/nslcd/nslcd.c b/nslcd/nslcd.c index e7dbb65..a0c67a6 100644 --- a/nslcd/nslcd.c +++ b/nslcd/nslcd.c @@ -648,6 +648,17 @@ int main(int argc, char *argv[]) #ifdef HAVE_PTHREAD_TIMEDJOIN_NP struct timespec ts; #endif /* HAVE_PTHREAD_TIMEDJOIN_NP */ + /* block all these signals so our worker threads won't handle them */ + sigemptyset(&signalmask); + sigaddset(&signalmask, SIGHUP); + sigaddset(&signalmask, SIGINT); + sigaddset(&signalmask, SIGQUIT); + sigaddset(&signalmask, SIGABRT); + sigaddset(&signalmask, SIGPIPE); + sigaddset(&signalmask, SIGTERM); + sigaddset(&signalmask, SIGUSR1); + sigaddset(&signalmask, SIGUSR2); + pthread_sigmask(SIG_BLOCK, &signalmask, &oldmask); /* close all file descriptors (except stdin/out/err) */ daemonize_closefds(); /* parse the command line */ @@ -785,17 +796,6 @@ int main(int argc, char *argv[]) } log_log(LOG_DEBUG, "setuid(%ul) done", (unsigned long int)nslcd_cfg->uid); } - /* block all these signals so our worker threads won't handle them */ - sigemptyset(&signalmask); - sigaddset(&signalmask, SIGHUP); - sigaddset(&signalmask, SIGINT); - sigaddset(&signalmask, SIGQUIT); - sigaddset(&signalmask, SIGABRT); - sigaddset(&signalmask, SIGPIPE); - sigaddset(&signalmask, SIGTERM); - sigaddset(&signalmask, SIGUSR1); - sigaddset(&signalmask, SIGUSR2); - pthread_sigmask(SIG_BLOCK, &signalmask, &oldmask); /* start worker threads */ log_log(LOG_INFO, "accepting connections"); nslcd_threads = (pthread_t *)malloc(nslcd_cfg->threads * sizeof(pthread_t)); -- cgit v1.2.3