]> granicus.if.org Git - linux-pam/commitdiff
pam_exec: Do not depend on open() returning STDOUT_FILENO.
authorTomas Mraz <tmraz@fedoraproject.org>
Tue, 26 Aug 2014 12:04:02 +0000 (14:04 +0200)
committerTomas Mraz <tmraz@fedoraproject.org>
Tue, 26 Aug 2014 12:04:02 +0000 (14:04 +0200)
modules/pam_exec/pam_exec.c (call_exec): Move the descriptor to
STDOUT_FILENO if needed.

modules/pam_exec/pam_exec.c

index 12c44444c1ab145396ed2e5c3d21fcdc3e59a548..5ab9630354bae4925db0d56c59e94744e6c8955c 100644 (file)
@@ -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);
            }
        }