]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/tty: don't hardcode terminal fd in get_terminal_name()
authorKarel Zak <kzak@redhat.com>
Mon, 13 May 2013 13:40:57 +0000 (15:40 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 13 May 2013 13:40:57 +0000 (15:40 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/ttyutils.h
lib/ttyutils.c
login-utils/login.c
login-utils/su-common.c

index 021156d3e71ce3346527756e2cb46012cb2e76d5..8882af2cb41ccd3195c77ade2be4a44596245cb8 100644 (file)
@@ -48,7 +48,8 @@ struct chardata {
        } while (0)
 
 extern int get_terminal_width(void);
-extern int get_terminal_name(const char **path, const char **name, const char **number);
+extern int get_terminal_name(int fd, const char **path, const char **name,
+                            const char **number);
 
 #define UL_TTY_KEEPCFLAGS      (1 << 1)
 #define UL_TTY_UTF8            (1 << 2)
index 3b5a68cd859b35e84e92488ecdaa20dd1921854f..76113a6d6c39f936a86abd2bf2e9722c76ae212b 100644 (file)
@@ -42,7 +42,8 @@ int get_terminal_width(void)
        return 0;
 }
 
-int get_terminal_name(const char **path,
+int get_terminal_name(int fd,
+                     const char **path,
                      const char **name,
                      const char **number)
 {
@@ -56,7 +57,7 @@ int get_terminal_name(const char **path,
        if (number)
                *number = NULL;
 
-       tty = ttyname(STDERR_FILENO);
+       tty = ttyname(fd);
        if (!tty)
                return -1;
        if (path)
index 0d2c16509225b1d62169203922b994bfdcbcb2e5..442ad4048addd9e2ddb4635383c8c8bf1003231d 100644 (file)
@@ -356,7 +356,7 @@ static void init_tty(struct login_context *cxt)
 
        cxt->tty_mode = (mode_t) getlogindefs_num("TTYPERM", TTY_MODE);
 
-       get_terminal_name(&cxt->tty_path, &cxt->tty_name, &cxt->tty_number);
+       get_terminal_name(0, &cxt->tty_path, &cxt->tty_name, &cxt->tty_number);
 
        /*
         * In case login is suid it was possible to use a hardlink as stdin
index d1a733909b9d2a61858ddeb980b97d90937a56f5..ba2a6166d2b21903a67d926f6d5f87ef9bb6796b 100644 (file)
@@ -158,7 +158,7 @@ log_syslog(struct passwd const *pw, bool successful)
       old_user = pwd ? pwd->pw_name : "";
     }
 
-  if (get_terminal_name(NULL, &tty, NULL) == 0 && tty)
+  if (get_terminal_name(STDERR_FILENO, NULL, &tty, NULL) == 0 && tty)
     tty = "none";
 
   openlog (program_invocation_short_name, 0 , LOG_AUTH);
@@ -185,7 +185,7 @@ static void log_btmp(struct passwd const *pw)
                pw && pw->pw_name ? pw->pw_name : "(unknown)",
                sizeof(ut.ut_user));
 
-       get_terminal_name(NULL, &tty_name, &tty_num);
+       get_terminal_name(STDERR_FILENO, NULL, &tty_name, &tty_num);
        if (tty_num)
                xstrncpy(ut.ut_id, tty_num, sizeof(ut.ut_id));
        if (tty_name)