[1174] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

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");

home help back first fref pref prev next nref lref last post