]> err.no Git - util-linux/commitdiff
login: use fd instead of pathname for update tty's owner and permissions
authorYann Droneaud <yann@droneaud.fr>
Mon, 25 Jan 2010 22:12:09 +0000 (23:12 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 28 Jan 2010 14:24:38 +0000 (15:24 +0100)
To avoid some nasty races, use the only true tty:
the one already opened, don't use the path.

Signed-off-by: Yann Droneaud <yann@droneaud.fr>
login-utils/login.c

index 486b30bf04abff6f4dee6c456943b362960ab301..fdc8078ddcd54fb420f884560fc632d4a5111599 100644 (file)
@@ -536,8 +536,8 @@ main(int argc, char **argv)
        ttt.c_cflag &= ~HUPCL;
 
        /* These can fail, e.g. with ttyn on a read-only filesystem */
-       chown(ttyn, 0, 0);
-       chmod(ttyn, TTY_MODE);
+       fchown(0, 0, 0);
+       fchmod(0, TTY_MODE);
 
        /* Kill processes left on this tty */
        tcsetattr(0,TCSAFLUSH,&ttt);
@@ -1009,9 +1009,9 @@ Michael Riepe <michael@stud.uni-hannover.de>
     logaudit(tty_name, username, hostname, pwd, 1);
     dolastlog(quietlog);
 
-    chown(ttyn, pwd->pw_uid,
+    fchown(0, pwd->pw_uid,
          (gr = getgrnam(TTYGRPNAME)) ? gr->gr_gid : pwd->pw_gid);
-    chmod(ttyn, TTY_MODE);
+    fchmod(0, TTY_MODE);
 
 #ifdef LOGIN_CHOWN_VCS
     /* if tty is one of the VC's then change owner and mode of the