* 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> 2009-04-27 Nicolas François <nicolas.francois@centraliens.net>
* src/login.c: Reuse a string and avoid an untranslated message * 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 */ addenv ("IFS= \t\n", NULL); /* ... instead, set a safe IFS */
} }
update_utmp (username, tty, hostname, utent);
if (pwd->pw_shell[0] == '*') { /* subsystem root */ if (pwd->pw_shell[0] == '*') { /* subsystem root */
pwd->pw_shell++; /* skip the '*' */ pwd->pw_shell++; /* skip the '*' */
subsystem (pwd); /* figure out what to execute */ subsystem (pwd); /* figure out what to execute */
@ -1198,6 +1196,7 @@ int main (int argc, char **argv)
} }
/* child */ /* child */
#endif #endif
/* If we were init, we need to start a new session */ /* If we were init, we need to start a new session */
if (getppid() == 1) { if (getppid() == 1) {
setsid(); 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. /* The pwd and spwd entries for the user have been copied.
* *