diff options
author | Tomas Mraz <tmraz@fedoraproject.org> | 2014-08-26 14:04:02 +0200 |
---|---|---|
committer | Tomas Mraz <tmraz@fedoraproject.org> | 2014-08-26 14:04:02 +0200 |
commit | b03f33830c94ea39ce04a865e62a9d346dcf1a2e (patch) | |
tree | 5c70052cb5b057e035981ecdfddaca6cf213103d /modules/pam_exec | |
parent | 29b63ae08f071aee5b1b901e6fb8f8131b82032d (diff) | |
download | pam-b03f33830c94ea39ce04a865e62a9d346dcf1a2e.tar.gz pam-b03f33830c94ea39ce04a865e62a9d346dcf1a2e.tar.bz2 pam-b03f33830c94ea39ce04a865e62a9d346dcf1a2e.zip |
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.
Diffstat (limited to 'modules/pam_exec')
-rw-r--r-- | 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 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); } } |