From b03f33830c94ea39ce04a865e62a9d346dcf1a2e Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Tue, 26 Aug 2014 14:04:02 +0200 Subject: pam_exec: Do not depend on open() returning STDOUT_FILENO. modules/pam_exec/pam_exec.c (call_exec): Move the descriptor to STDOUT_FILENO if needed. --- modules/pam_exec/pam_exec.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c index 12c44444..5ab96303 100644 --- a/modules/pam_exec/pam_exec.c +++ b/modules/pam_exec/pam_exec.c @@ -360,9 +360,19 @@ call_exec (const char *pam_type, pam_handle_t *pamh, logfile); _exit (err); } + if (i != STDOUT_FILENO) + { + if (dup2 (i, STDOUT_FILENO) == -1) + { + int err = errno; + pam_syslog (pamh, LOG_ERR, "dup2 failed: %m"); + _exit (err); + } + close (i); + } if (asprintf (&buffer, "*** %s", ctime (&tm)) > 0) { - pam_modutil_write (i, buffer, strlen (buffer)); + pam_modutil_write (STDOUT_FILENO, buffer, strlen (buffer)); free (buffer); } } -- cgit v1.2.3