]> granicus.if.org Git - linux-pam/commitdiff
pam_echo: Avoid leaking file descriptor.
authorRobin Hack <rhack@redhat.com>
Thu, 14 Aug 2014 11:33:56 +0000 (13:33 +0200)
committerTomas Mraz <tmraz@fedoraproject.org>
Thu, 14 Aug 2014 11:33:56 +0000 (13:33 +0200)
modules/pam_echo/pam_echo.c (pam_echo): Close fd in error cases.

modules/pam_echo/pam_echo.c

index 043ff7034d3d9e14c54bb95925853c7bac53bacc..d0879fbfe980645ebe302c8fc2de6402334d1883 100644 (file)
@@ -180,16 +180,23 @@ pam_echo (pam_handle_t *pamh, int flags, int argc, const char **argv)
 
       /* load file into message buffer. */
       if ((fstat (fd, &st) < 0) || !st.st_size)
-       return PAM_IGNORE;
+       {
+         close (fd);
+         return PAM_IGNORE;
+       }
 
       mtmp = malloc (st.st_size + 1);
       if (!mtmp)
-       return PAM_BUF_ERR;
+       {
+         close (fd);
+         return PAM_BUF_ERR;
+       }
 
       if (pam_modutil_read (fd, mtmp, st.st_size) == -1)
        {
          pam_syslog (pamh, LOG_ERR, "Error while reading %s: %m", file);
          free (mtmp);
+         close (fd);
          return PAM_IGNORE;
        }