* 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:
parent
009125484e
commit
91fc51387c
@ -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
|
||||||
|
@ -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.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user