From 230c3e1e54e0a997ce70e110e0f423955bd4701b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 21 Feb 2004 01:57:26 +0000 Subject: Update. 2004-02-20 Thorsten Kukuk * nscd/nscd.c (termination_handler): Use _exit instead of exit * nscd/nscd.c (main): Report fork errors. --- ChangeLog | 6 ++++++ elf/dl-sym.c | 4 ++-- nscd/nscd.c | 16 +++++++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2dcb477744..288d41c7fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ +2004-02-20 Thorsten Kukuk + + * nscd/nscd.c (termination_handler): Use _exit instead of exit + 2004-02-20 Ulrich Drepper + * nscd/nscd.c (main): Report fork errors. + * dlfcn/dlsym.c: Get ld.so loading lock before the call into ld.so. * dlfcn/dlvsym.c: Likewise. * elf/dl-addr.c: Get loading lock while using _dl_loaded data. diff --git a/elf/dl-sym.c b/elf/dl-sym.c index 3bf8104a4a..851d6b518e 100644 --- a/elf/dl-sym.c +++ b/elf/dl-sym.c @@ -1,5 +1,5 @@ /* Look up a symbol in a shared object loaded by `dlopen'. - Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -89,7 +89,7 @@ RTLD_NEXT used in code not dynamically loaded")); #if defined USE_TLS && defined SHARED if (ELFW(ST_TYPE) (ref->st_info) == STT_TLS) /* The found symbol is a thread-local storage variable. - Return the address for to the current thread. */ + Return the address for the current thread. */ return _dl_tls_symaddr (result, ref); #endif diff --git a/nscd/nscd.c b/nscd/nscd.c index 50d3cfcf5f..e3040bb20f 100644 --- a/nscd/nscd.c +++ b/nscd/nscd.c @@ -159,7 +159,10 @@ main (int argc, char **argv) { int i; - if (fork ()) + pid_t pid = fork (); + if (pid == -1) + error (EXIT_FAILURE, errno, _("cannot fork")); + if (pid != 0) exit (0); int nullfd = open (_PATH_DEVNULL, O_RDWR); @@ -211,7 +214,10 @@ main (int argc, char **argv) for (i = min_close_fd; i < getdtablesize (); i++) close (i); - if (fork ()) + pid = fork (); + if (pid == -1) + error (EXIT_FAILURE, errno, _("cannot fork")); + if (pid != 0) exit (0); setsid (); @@ -237,7 +243,7 @@ main (int argc, char **argv) signal (SIGTERM, termination_handler); signal (SIGPIPE, SIG_IGN); - /* Cleanup files created by a previous `bind'. */ + /* Cleanup files created by a previous 'bind'. */ unlink (_PATH_NSCDSOCKET); /* Make sure we do not get recursive calls. */ @@ -394,13 +400,13 @@ termination_handler (int signum) { close_sockets (); - /* Clean up the file created by `bind'. */ + /* Clean up the file created by 'bind'. */ unlink (_PATH_NSCDSOCKET); /* Clean up pid file. */ unlink (_PATH_NSCDPID); - exit (EXIT_SUCCESS); + _exit (EXIT_SUCCESS); } /* Returns 1 if the process in pid file FILE is running, 0 if not. */ -- cgit v1.2.3