Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Nov 2016 22:28:57 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r308815 - stable/11/usr.sbin/pw
Message-ID:  <201611182228.uAIMSvxK016904@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Fri Nov 18 22:28:57 2016
New Revision: 308815
URL: https://svnweb.freebsd.org/changeset/base/308815

Log:
  MFC r307752
  
  Close some file descriptor leaks in pw

Modified:
  stable/11/usr.sbin/pw/grupd.c
  stable/11/usr.sbin/pw/pw_nis.c
  stable/11/usr.sbin/pw/pwupd.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.sbin/pw/grupd.c
==============================================================================
--- stable/11/usr.sbin/pw/grupd.c	Fri Nov 18 22:23:01 2016	(r308814)
+++ stable/11/usr.sbin/pw/grupd.c	Fri Nov 18 22:28:57 2016	(r308815)
@@ -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: stable/11/usr.sbin/pw/pw_nis.c
==============================================================================
--- stable/11/usr.sbin/pw/pw_nis.c	Fri Nov 18 22:23:01 2016	(r308814)
+++ stable/11/usr.sbin/pw/pw_nis.c	Fri Nov 18 22:28:57 2016	(r308815)
@@ -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: stable/11/usr.sbin/pw/pwupd.c
==============================================================================
--- stable/11/usr.sbin/pw/pwupd.c	Fri Nov 18 22:23:01 2016	(r308814)
+++ stable/11/usr.sbin/pw/pwupd.c	Fri Nov 18 22:28:57 2016	(r308815)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611182228.uAIMSvxK016904>