[1174] in Kerberos-V5-bugs
krb5b4pl3: kdc should disassociate itself from the terminal
daemon@ATHENA.MIT.EDU (Jonathan I. Kamens)
Tue Mar 14 14:59:47 1995
From: "Jonathan I. Kamens" <jik@cam.ov.com>
Date: Tue, 14 Mar 1995 15:02:58 -0500
To: krb5-bugs@MIT.EDU
The KDC should disassociate itself from the terminal so it doesn't
have to be run with '&'. The patch below makes it do so by default,
but adds a "-n" (for "nofork") option to prevent it from doing so.
--- kdc/main.c 1995/03/09 15:26:18 1.1
+++ kdc/main.c 1995/03/14 20:01:42 1.2.1.1
@@ -51,6 +51,8 @@
#include "extern.h"
#include "kdc5_err.h"
+static int nofork = 0;
+
static void
kdc_com_err_proc(whoami, code, format, pvar)
const char *whoami;
@@ -133,7 +135,7 @@
usage(name)
char *name;
{
- fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterkeytype] [-M masterkeyname]\n", name);
+ fprintf(stderr, "usage: %s [-d dbpathname] [-r dbrealmname] [-R replaycachename ]\n\t[-m] [-k masterkeytype] [-M masterkeyname] [-n]\n", name);
return;
}
@@ -155,7 +157,7 @@
extern char *optarg;
- while ((c = getopt(argc, argv, "r:d:mM:k:R:")) != EOF) {
+ while ((c = getopt(argc, argv, "r:d:mM:nk:R:")) != EOF) {
switch(c) {
case 'r': /* realm name for db */
db_realm = optarg;
@@ -169,6 +171,9 @@
case 'M': /* master key name in DB */
mkey_name = optarg;
break;
+ case 'n':
+ nofork++; /* don't detach from terminal */
+ break;
case 'k': /* keytype for master key */
master_keyblock.keytype = atoi(optarg);
keytypedone++;
@@ -452,6 +457,13 @@
finish_args(argv[0]);
return 1;
}
+
+ if (!nofork && daemon(0, 0)) {
+ com_err(argv[0], errno, "while detaching from tty");
+ finish_args(argv[0]);
+ return 1;
+ }
+
syslog(LOG_INFO, "commencing operation");
if (retval = listen_and_process(argv[0])){
com_err(argv[0], retval, "while processing network requests");