commit b03f33830c94ea39ce04a865e62a9d346dcf1a2e
Author: Tomas Mraz <tmraz(a)fedoraproject.org>
Date: Tue Aug 26 14:04:02 2014 +0200
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 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c
index 12c4444..5ab9630 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);
}
}