+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
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 */
}
/* child */
#endif
+
/* If we were init, we need to start a new session */
if (getppid() == 1) {
setsid();
}
}
+ /*
+ * 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.
*