aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/ypbind
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>1997-01-12 02:48:09 +0000
committerBill Paul <wpaul@FreeBSD.org>1997-01-12 02:48:09 +0000
commit24ec979b41e56ad182d244361e0869b5bc8b40b7 (patch)
tree97438af46c2d38b778f0ab0519bfc2606a55822e /usr.sbin/ypbind
parent9880dddc9e1e1a6a6aae61c9fc62235dfb1b6a39 (diff)
downloadsrc-24ec979b41e56ad182d244361e0869b5bc8b40b7.tar.gz
src-24ec979b41e56ad182d244361e0869b5bc8b40b7.zip
- Save parent pid and check current pid against it upon entry to
terminate(). This makes doubly sure we don't trip the SIGTERM handler in a child process. Suggested by: phk. - It's int main(argc, argv), not void main(argc, argv), gosh darn it.
Notes
Notes: svn path=/head/; revision=21581
Diffstat (limited to 'usr.sbin/ypbind')
-rw-r--r--usr.sbin/ypbind/ypbind.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/usr.sbin/ypbind/ypbind.c b/usr.sbin/ypbind/ypbind.c
index ded22fbed1d7..26c76ecd7345 100644
--- a/usr.sbin/ypbind/ypbind.c
+++ b/usr.sbin/ypbind/ypbind.c
@@ -112,6 +112,7 @@ static struct _dom_binding *broad_domain;
#define YPSET_ALL 2
int ypsetmode = YPSET_NO;
int ypsecuremode = 0;
+int ppid;
/*
* Special restricted mode variables: when in restricted mode, only the
@@ -349,6 +350,9 @@ int sig;
struct _dom_binding *ypdb;
char path[MAXPATHLEN];
+ if (ppid != getpid())
+ exit(0);
+
for(ypdb=ypbindlist; ypdb; ypdb=ypdb->dom_pnext) {
close(ypdb->dom_lockfd);
if (ypdb->dom_broadcast_pid)
@@ -363,7 +367,7 @@ int sig;
exit(0);
}
-void
+int
main(argc, argv)
int argc;
char **argv;
@@ -466,6 +470,8 @@ char **argv;
signal(SIGCHLD, reaper);
signal(SIGTERM, terminate);
+ ppid = getpid(); /* Remember who we are. */
+
openlog(argv[0], LOG_PID, LOG_DAEMON);
/* Kick off the default domain */
@@ -497,6 +503,9 @@ char **argv;
break;
}
}
+
+ /* NOTREACHED */
+ exit(1);
}
void