summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-07-28 23:23:11 +0200
committerLennart Poettering <lennart@poettering.net>2008-07-28 23:23:11 +0200
commit50aba7c323215a210b1fd154b63f6f61d4aa165a (patch)
tree4ccec45c648979927971362f3d9d36e5efc127b4
parent8e84945a0d8fbd721799a38d32ad0c9ec27edf65 (diff)
add a bit more error checking
-rw-r--r--libdaemon/dfork.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/libdaemon/dfork.c b/libdaemon/dfork.c
index 464af49..be57c09 100644
--- a/libdaemon/dfork.c
+++ b/libdaemon/dfork.c
@@ -131,14 +131,21 @@ pid_t daemon_fork(void) {
sa_new.sa_handler = sigchld;
sa_new.sa_flags = SA_RESTART;
+ if (sigemptyset(&ss_new) < 0) {
+ daemon_log(LOG_ERR, "sigemptyset() failed: %s", strerror(errno));
+ return (pid_t) -1;
+ }
+
+ if (sigaddset(&ss_new, SIGCHLD) < 0) {
+ daemon_log(LOG_ERR, "sigaddset() failed: %s", strerror(errno));
+ return (pid_t) -1;
+ }
+
if (sigaction(SIGCHLD, &sa_new, &sa_old) < 0) {
daemon_log(LOG_ERR, "sigaction() failed: %s", strerror(errno));
return (pid_t) -1;
}
- sigemptyset(&ss_new);
- sigaddset(&ss_new, SIGCHLD);
-
if (sigprocmask(SIG_UNBLOCK, &ss_new, &ss_old) < 0) {
daemon_log(LOG_ERR, "sigprocmask() failed: %s", strerror(errno));