Patrick Williams | 8e7b46e | 2023-05-01 14:19:06 -0500 | [diff] [blame^] | 1 | commit 670cae834827a8f794e6f7464fa57790d911b63c |
| 2 | Author: SoumyaWind <121475834+SoumyaWind@users.noreply.github.com> |
| 3 | Date: 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 | |
| 10 | Upstream-Status: Accepted [https://github.com/shadow-maint/shadow/commit/670cae834827a8f794e6f7464fa57790d911b63c] |
| 11 | |
| 12 | diff --git a/src/login.c b/src/login.c |
| 13 | index 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 |