]> err.no Git - util-linux/commitdiff
login: attempt to run if it has no read/write access to its terminal
authorKarel Zak <kzak@redhat.com>
Thu, 8 Mar 2007 21:35:38 +0000 (22:35 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 8 Mar 2007 21:35:38 +0000 (22:35 +0100)
If you manage to exec login with a userid other than root, and its
input / output directed to a terminal for which it does not have
read/write access, it will attempt to proceed (and can potentially
hang forever -- but this hang has been fixed in a previous commit).

It's better to check if we have permissions for terminal rather than
do any useless things.

From: Jason Vas Dias <jvdias@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
login-utils/login.c

index 6ad8fcc803619e196e1340ff60f7abb7f5233ff4..3948cb7d14a22dc4e9a961ab483ecd3cc272d9bf 100644 (file)
@@ -223,7 +223,8 @@ check_ttyname(char *ttyn) {
 
        if (lstat(ttyn, &statbuf)
            || !S_ISCHR(statbuf.st_mode)
-           || (statbuf.st_nlink > 1 && strncmp(ttyn, "/dev/", 5))) {
+           || (statbuf.st_nlink > 1 && strncmp(ttyn, "/dev/", 5))
+           || (access(ttyn, R_OK | W_OK) != 0)) {
                syslog(LOG_ERR, _("FATAL: bad tty"));
                sleep(1);
                exit(1);