* src/login.c: Move update_utmp() after the PID or session ID

changed in order to get more accurate data in UTMP. This also
	fixes "exec login" when login in installed setuid.
This commit is contained in:
nekral-guest 2009-04-27 20:25:23 +00:00
parent 009125484e
commit 91fc51387c
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2009-04-27 Nicolas François <nicolas.francois@centraliens.net>
* src/login.c: Move update_utmp() after the PID or session ID
changed in order to get more accurate data in UTMP. This also
fixes "exec login" when login in installed setuid.
2009-04-27 Nicolas François <nicolas.francois@centraliens.net>
* src/login.c: Reuse a string and avoid an untranslated message

View File

@ -1109,8 +1109,6 @@ int main (int argc, char **argv)
addenv ("IFS= \t\n", NULL); /* ... instead, set a safe IFS */
}
update_utmp (username, tty, hostname, utent);
if (pwd->pw_shell[0] == '*') { /* subsystem root */
pwd->pw_shell++; /* skip the '*' */
subsystem (pwd); /* figure out what to execute */
@ -1198,6 +1196,7 @@ int main (int argc, char **argv)
}
/* child */
#endif
/* If we were init, we need to start a new session */
if (getppid() == 1) {
setsid();
@ -1206,6 +1205,11 @@ int main (int argc, char **argv)
}
}
/*
* The utmp entry needs to be updated to indicate the new status
* of the session, the new PID and SID.
*/
update_utmp (username, tty, hostname, utent);
/* The pwd and spwd entries for the user have been copied.
*