Fix check for return value of catch_signal().
authorAndre Noll <maan@systemlinux.org>
Mon, 25 Jun 2012 18:48:53 +0000 (20:48 +0200)
committerAndre Noll <maan@systemlinux.org>
Mon, 25 Jun 2012 18:48:53 +0000 (20:48 +0200)
Commit 2d7a4d61 made adu's signal handling portable by switching from
signal() to sigaction() for installing signal handlers.  This commit
added the new function catch_signal() which returns the return value
of the underlying call to sigaction(), i.e. zero on success, and -1
on errors.

However, embarrassingly enough, one caller of catch_signal() still
checked this return value against SIG_ERR, which is the value that
is returned from signal() on errors.

Fix this bug by testing the return value against zero.

adu.c

diff --git a/adu.c b/adu.c
index 0bb5aad..6d4780e 100644 (file)
--- a/adu.c
+++ b/adu.c
@@ -181,7 +181,7 @@ static int init_signals(void)
                return -E_SIGACTION;
        if (catch_signal(SIGTERM) < 0)
                return -E_SIGACTION;
-       if (catch_signal(SIGPIPE) == SIG_ERR)
+       if (catch_signal(SIGPIPE) < 0)
                return -E_SIGACTION;
        return 1;
 }