When LOGIN_SESSION_AS_CHILD is enabled login.c calls vfork() before
calling update_utmp().  Thie prevents update_utmp() from updating the
entry created by getty, because we use ut_pid (like upstream shadow
login does) to locate the UTMP record.

Signed-off-by: Joachim Nilsson <[email protected]>

--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -522,6 +522,8 @@ int login_main(int argc UNUSED_PARAM, ch
        if (pw->pw_uid != 0)
                die_if_nologin();
 
+       update_utmp(getpid(), USER_PROCESS, short_tty, username, run_by_root ? 
opt_host : NULL);
+
 #if ENABLE_LOGIN_SESSION_AS_CHILD
        child_pid = vfork();
        if (child_pid != 0) {
@@ -544,8 +546,6 @@ int login_main(int argc UNUSED_PARAM, ch
        fchown(0, pw->pw_uid, pw->pw_gid);
        fchmod(0, 0600);
 
-       update_utmp(getpid(), USER_PROCESS, short_tty, username, run_by_root ? 
opt_host : NULL);
-
        /* We trust environment only if we run by root */
        if (ENABLE_LOGIN_SCRIPTS && run_by_root)
                run_login_script(pw, full_tty);
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to