static unsigned int timeout = LOGIN_TIMEOUT;
static int child_pid = 0;
static volatile sig_atomic_t got_sig = 0;
-static char timeout_msg[128];
+static char *timeout_msg;
#ifdef LOGIN_CHOWN_VCS
/* true if the filedescriptor fd is a console tty, very Linux specific */
{
signal(SIGALRM, timedout2);
alarm(10);
- ignore_result( write(STDERR_FILENO, timeout_msg, strlen(timeout_msg)) );
+ if (timeout_msg)
+ ignore_result( write(STDERR_FILENO, timeout_msg, strlen(timeout_msg)) );
signal(SIGALRM, SIG_IGN);
alarm(0);
timedout2(0);
textdomain(PACKAGE);
/* TRANSLATORS: The standard value for %u is 60. */
- snprintf(timeout_msg, sizeof(timeout_msg),
- _("%s: timed out after %u seconds"),
- program_invocation_short_name, timeout);
+ xasprintf(&timeout_msg, _("%s: timed out after %u seconds"),
+ program_invocation_short_name, timeout);
signal(SIGALRM, timedout);
(void) sigaction(SIGALRM, NULL, &act);
/* committed to login -- turn off timeout */
alarm((unsigned int)0);
+ free(timeout_msg);
+ timeout_msg = NULL;
endpwent();