summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libmilter/signal.c
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2006-03-22 16:40:03 +0000
committergshapiro <gshapiro@FreeBSD.org>2006-03-22 16:40:03 +0000
commitef9770707c0f88e94a0c4a409f8fb74cea250716 (patch)
treef3bd1c133ce6e698fd2ff3c0280c7103bfac7af3 /contrib/sendmail/libmilter/signal.c
parent3f99651e549f30e601bcde5ce7907ee58c365442 (diff)
downloadFreeBSD-src-ef9770707c0f88e94a0c4a409f8fb74cea250716.zip
FreeBSD-src-ef9770707c0f88e94a0c4a409f8fb74cea250716.tar.gz
Import sendmail 8.13.6
Security: FreeBSD-SA-06:13.sendmail
Diffstat (limited to 'contrib/sendmail/libmilter/signal.c')
-rw-r--r--contrib/sendmail/libmilter/signal.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/contrib/sendmail/libmilter/signal.c b/contrib/sendmail/libmilter/signal.c
index d55ab57..ad68469 100644
--- a/contrib/sendmail/libmilter/signal.c
+++ b/contrib/sendmail/libmilter/signal.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2004 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2004, 2006 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: signal.c,v 8.42 2004/08/20 21:10:30 ca Exp $")
+SM_RCSID("@(#)$Id: signal.c,v 8.44 2006/03/03 03:42:04 ca Exp $")
#include "libmilter.h"
@@ -90,7 +90,7 @@ static void *
mi_signal_thread(name)
void *name;
{
- int sig, errs;
+ int sig, errs, sigerr;
sigset_t set;
(void) sigemptyset(&set);
@@ -103,19 +103,23 @@ mi_signal_thread(name)
for (;;)
{
- sig = 0;
+ sigerr = sig = 0;
#if defined(SOLARIS) || defined(__svr5__)
if ((sig = sigwait(&set)) < 0)
#else /* defined(SOLARIS) || defined(__svr5__) */
- if (sigwait(&set, &sig) != 0)
+ if ((sigerr = sigwait(&set, &sig)) != 0)
#endif /* defined(SOLARIS) || defined(__svr5__) */
{
+ /* some OS return -1 and set errno: copy it */
+ if (sigerr <= 0)
+ sigerr = errno;
+
/* this can happen on OSF/1 (at least) */
- if (errno == EINTR)
+ if (sigerr == EINTR)
continue;
smi_log(SMI_LOG_ERR,
"%s: sigwait returned error: %d",
- (char *)name, errno);
+ (char *)name, sigerr);
if (++errs > MAX_FAILS_T)
{
mi_stop_milters(MILTER_ABRT);
OpenPOWER on IntegriCloud