summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--loginutils/login.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/loginutils/login.c b/loginutils/login.c
index d9e9b532b..cdc38fbaf 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -284,7 +284,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
struct passwd *pw;
char *opt_host = opt_host; /* for compiler */
char *opt_user = opt_user; /* for compiler */
- char full_tty[TTYNAME_SIZE];
+ char *full_tty;
USE_SELINUX(security_context_t user_sid = NULL;)
USE_FEATURE_UTMP(struct utmp utent;)
#if ENABLE_PAM
@@ -296,7 +296,6 @@ int login_main(int argc UNUSED_PARAM, char **argv)
char pwdbuf[256];
#endif
- short_tty = full_tty;
username[0] = '\0';
signal(SIGALRM, alarm_handler);
alarm(TIMEOUT);
@@ -322,15 +321,14 @@ int login_main(int argc UNUSED_PARAM, char **argv)
safe_strncpy(username, argv[0], sizeof(username));
/* Let's find out and memorize our tty */
- if (!isatty(0) || !isatty(1) || !isatty(2))
+ if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO) || !isatty(STDERR_FILENO))
return EXIT_FAILURE; /* Must be a terminal */
- safe_strncpy(full_tty, "UNKNOWN", sizeof(full_tty));
- tmp = xmalloc_ttyname(STDIN_FILENO);
- if (tmp) {
- safe_strncpy(full_tty, tmp, sizeof(full_tty));
- if (strncmp(full_tty, "/dev/", 5) == 0)
- short_tty = full_tty + 5;
- }
+ full_tty = xmalloc_ttyname(STDIN_FILENO);
+ if (!full_tty)
+ full_tty = xstrdup("UNKNOWN");
+ short_tty = full_tty;
+ if (strncmp(full_tty, "/dev/", 5) == 0)
+ short_tty += 5;
read_or_build_utent(&utent, run_by_root);