blob: 37ba5f3dc21ff72b9e1e7c0016fe6021ef039450 [file] [log] [blame]
Patrick Williams8e7b46e2023-05-01 14:19:06 -05001commit 670cae834827a8f794e6f7464fa57790d911b63c
2Author: SoumyaWind <121475834+SoumyaWind@users.noreply.github.com>
3Date: Tue Dec 27 17:40:17 2022 +0530
4
5 shadow: Fix can not print full login timeout message
6
7 Login timed out message prints only first few bytes when write is immediately followed by exit.
8 Calling exit from new handler provides enough time to display full message.
9
10Upstream-Status: Accepted [https://github.com/shadow-maint/shadow/commit/670cae834827a8f794e6f7464fa57790d911b63c]
11
12diff --git a/src/login.c b/src/login.c
13index 116e2cb3..c55f4de0 100644
14--- a/src/login.c
15+++ b/src/login.c
16@@ -120,6 +120,7 @@ static void get_pam_user (char **ptr_pam_user);
17
18 static void init_env (void);
19 static void alarm_handler (int);
20+static void exit_handler (int);
21
22 /*
23 * usage - print login command usage and exit
24@@ -391,11 +392,16 @@ static void init_env (void)
25 #endif /* !USE_PAM */
26 }
27
28+static void exit_handler (unused int sig)
29+{
30+ _exit (0);
31+}
32
33 static void alarm_handler (unused int sig)
34 {
35 write (STDERR_FILENO, tmsg, strlen (tmsg));
36- _exit (0);
37+ signal(SIGALRM, exit_handler);
38+ alarm(2);
39 }
40
41 #ifdef USE_PAM