summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ttyutils.h3
-rw-r--r--lib/ttyutils.c5
-rw-r--r--login-utils/login.c2
-rw-r--r--login-utils/su-common.c4
4 files changed, 8 insertions, 6 deletions
diff --git a/include/ttyutils.h b/include/ttyutils.h
index 021156d3e..8882af2cb 100644
--- a/include/ttyutils.h
+++ b/include/ttyutils.h
@@ -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)
diff --git a/lib/ttyutils.c b/lib/ttyutils.c
index 3b5a68cd8..76113a6d6 100644
--- a/lib/ttyutils.c
+++ b/lib/ttyutils.c
@@ -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)
diff --git a/login-utils/login.c b/login-utils/login.c
index 0d2c16509..442ad4048 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
@@ -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
diff --git a/login-utils/su-common.c b/login-utils/su-common.c
index d1a733909..ba2a6166d 100644
--- a/login-utils/su-common.c
+++ b/login-utils/su-common.c
@@ -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)