From 6815553adff216ba86ce08e7d9fb7eaab9d0d93c Mon Sep 17 00:00:00 2001 From: wpaul Date: Thu, 4 Jun 1998 15:11:32 +0000 Subject: Protect errno in signal handlers, like in portmap. --- usr.sbin/rpc.yppasswdd/yppasswdd_server.c | 7 ++++++- usr.sbin/ypserv/yp_main.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/usr.sbin/rpc.yppasswdd/yppasswdd_server.c b/usr.sbin/rpc.yppasswdd/yppasswdd_server.c index f41cce2..5f57ce8 100644 --- a/usr.sbin/rpc.yppasswdd/yppasswdd_server.c +++ b/usr.sbin/rpc.yppasswdd/yppasswdd_server.c @@ -32,7 +32,7 @@ #ifndef lint static const char rcsid[] = - "$Id$"; + "$Id: yppasswdd_server.c,v 1.14 1997/10/13 11:18:53 charnier Exp $"; #endif /* not lint */ #include @@ -70,6 +70,9 @@ void reaper(sig) extern pid_t pid; extern int pstat; int st; + int saved_errno; + + saved_errno = errno; if (sig > 0) { if (sig == SIGCHLD) @@ -77,6 +80,8 @@ void reaper(sig) } else { pid = waitpid(pid, &pstat, 0); } + + errno = saved_errno; return; } diff --git a/usr.sbin/ypserv/yp_main.c b/usr.sbin/ypserv/yp_main.c index 1b2546d..59974ad 100644 --- a/usr.sbin/ypserv/yp_main.c +++ b/usr.sbin/ypserv/yp_main.c @@ -32,7 +32,7 @@ #ifndef lint static const char rcsid[] = - "$Id: yp_main.c,v 1.1 1997/11/09 20:54:38 wpaul Exp wpaul $"; + "$Id: yp_main.c,v 1.17 1998/02/11 19:15:32 wpaul Exp $"; #endif /* not lint */ /* @@ -158,13 +158,17 @@ static void unregister() static void reaper(sig) int sig; { - int status; + int status; + int saved_errno; + + saved_errno = errno; if (sig == SIGHUP) { load_securenets(); #ifdef DB_CACHE yp_flush_all(); #endif + errno = saved_errno; return; } @@ -175,6 +179,8 @@ static void reaper(sig) unregister(); exit(0); } + errno = saved_errno; + return; } static void usage() -- cgit v1.1