If started as init, login and sulogin need to start a new session.

This commit is contained in:
nekral-guest
2007-12-26 22:36:54 +00:00
parent f5461ff01e
commit b44a6c316d
4 changed files with 23 additions and 0 deletions

View File

@@ -35,6 +35,7 @@
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include "defines.h"
#include "getdef.h"
#include "prototypes.h"
@@ -142,6 +143,12 @@ static RETSIGTYPE catch_signals (int sig)
#endif
exit (1); /* must be a terminal */
}
/* If we were init, we need to start a new session */
if (getppid() == 1) {
setsid();
if (ioctl(0, TIOCSCTTY, 1))
fprintf(stderr,_("TIOCSCTTY failed"));
}
while (*envp) /* add inherited environment, */
addenv (*envp++, NULL); /* some variables change later */