shadow: Fix can not print full login timeout message

When we do not enter password during login, it is expected to display message "Login timed out after 60 seconds". But it prints only first few bytes(like "Login t") when write is immediately followed by exit.
Fix - Calling exit from new handler provides enough time to display full message.

Upstream-Status: Accepted [670cae8348]

(From OE-Core rev: 644cfe9dcf351bfa6c67f4b4d1e7dec416a59021)

Signed-off-by: Soumya <soumya.sambu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Soumya
2023-03-31 16:26:51 +00:00
committed by Richard Purdie
parent 6fbae6e06c
commit 3c7f0d2ec6
2 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
commit 670cae834827a8f794e6f7464fa57790d911b63c
Author: SoumyaWind <121475834+SoumyaWind@users.noreply.github.com>
Date: Tue Dec 27 17:40:17 2022 +0530
shadow: Fix can not print full login timeout message
Login timed out message prints only first few bytes when write is immediately followed by exit.
Calling exit from new handler provides enough time to display full message.
Upstream-Status: Accepted [https://github.com/shadow-maint/shadow/commit/670cae834827a8f794e6f7464fa57790d911b63c]
diff --git a/src/login.c b/src/login.c
index 116e2cb3..c55f4de0 100644
--- a/src/login.c
+++ b/src/login.c
@@ -120,6 +120,7 @@ static void get_pam_user (char **ptr_pam_user);
static void init_env (void);
static void alarm_handler (int);
+static void exit_handler (int);
/*
* usage - print login command usage and exit
@@ -391,11 +392,16 @@ static void init_env (void)
#endif /* !USE_PAM */
}
+static void exit_handler (unused int sig)
+{
+ _exit (0);
+}
static void alarm_handler (unused int sig)
{
write (STDERR_FILENO, tmsg, strlen (tmsg));
- _exit (0);
+ signal(SIGALRM, exit_handler);
+ alarm(2);
}
#ifdef USE_PAM

View File

@@ -14,6 +14,7 @@ GITHUB_BASE_URI = "https://github.com/shadow-maint/shadow/releases"
SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.gz \
${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
file://useradd \
file://0001-Fix-can-not-print-full-login.patch \
"
SRC_URI:append:class-target = " \