Author: asomers
Date: Fri Oct 21 20:17:19 2016
New Revision: 307752
URL: https://svnweb.freebsd.org/changeset/base/307752

Log:
  Close some file descriptor leaks in pw
  
  MFC after:    4 weeks
  Sponsored by: Spectra Logic Corp
  Differential Revision:        https://reviews.freebsd.org/D8245

Modified:
  head/usr.sbin/pw/grupd.c
  head/usr.sbin/pw/pw_nis.c
  head/usr.sbin/pw/pwupd.c

Modified: head/usr.sbin/pw/grupd.c
==============================================================================
--- head/usr.sbin/pw/grupd.c    Fri Oct 21 19:44:09 2016        (r307751)
+++ head/usr.sbin/pw/grupd.c    Fri Oct 21 20:17:19 2016        (r307752)
@@ -34,6 +34,7 @@ static const char rcsid[] =
 #include <libutil.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 
 #include "pwupd.h"
 
@@ -73,8 +74,10 @@ gr_update(struct group * grp, char const
        }
        if (gr_copy(pfd, tfd, gr, old_gr) == -1) {
                gr_fini();
+               close(tfd);
                err(1, "gr_copy()");
        }
+       close(tfd);
        if (gr_mkdb() == -1) {
                gr_fini();
                err(1, "gr_mkdb()");

Modified: head/usr.sbin/pw/pw_nis.c
==============================================================================
--- head/usr.sbin/pw/pw_nis.c   Fri Oct 21 19:44:09 2016        (r307751)
+++ head/usr.sbin/pw/pw_nis.c   Fri Oct 21 20:17:19 2016        (r307752)
@@ -34,6 +34,7 @@ static const char rcsid[] =
 #include <err.h>
 #include <pwd.h>
 #include <libutil.h>
+#include <unistd.h>
 
 #include "pw.h"
 
@@ -63,8 +64,10 @@ pw_nisupdate(const char * path, struct p
        }
        if (pw_copy(pfd, tfd, pw, old_pw) == -1) {
                pw_fini();
+               close(tfd);
                err(1, "pw_copy()");
        }
+       close(tfd);
        if (chmod(pw_tempname(), 0644) == -1)
                err(1, "chmod()");
        if (rename(pw_tempname(), path) == -1)

Modified: head/usr.sbin/pw/pwupd.c
==============================================================================
--- head/usr.sbin/pw/pwupd.c    Fri Oct 21 19:44:09 2016        (r307751)
+++ head/usr.sbin/pw/pwupd.c    Fri Oct 21 20:17:19 2016        (r307752)
@@ -111,8 +111,10 @@ pw_update(struct passwd * pwd, char cons
        }
        if (pw_copy(pfd, tfd, pw, old_pw) == -1) {
                pw_fini();
+               close(tfd);
                err(1, "pw_copy()");
        }
+       close(tfd);
        /*
         * in case of deletion of a user, the whole database
         * needs to be regenerated
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to