[Pkg-shadow-commits] r1974 - in upstream/trunk: . libmisc src

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Wed Apr 16 21:52:47 UTC 2008


Author: nekral-guest
Date: 2008-04-16 21:52:46 +0000 (Wed, 16 Apr 2008)
New Revision: 1974

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/libmisc/entry.c
   upstream/trunk/libmisc/find_new_ids.c
   upstream/trunk/libmisc/pwdcheck.c
   upstream/trunk/src/faillog.c
   upstream/trunk/src/groupmod.c
   upstream/trunk/src/groups.c
   upstream/trunk/src/lastlog.c
   upstream/trunk/src/login.c
   upstream/trunk/src/newgrp.c
   upstream/trunk/src/passwd.c
Log:
Ensure that getpwent() is used in setpwent(), getpwent(),
endpwend() sequences (ditto for getgrent(), getspent(), and
getsgent()). The only real (minor) issue was in login, which kept
the passwd file open.
* libmisc/entry.c: Remove unneeded setspent() and endspent() (only
  getspnam is called in the middle).
* libmisc/find_new_ids.c: Make sure to close the password and
  group files with endpwent() and endgrent().
* libmisc/pwdcheck.c: Remove unneeded endspent() (only getspnam()
  is called before).
* src/lastlog.c, src/passwd.c, src/groupmod.c, src/faillog.c,
  src/groups.c: Make sure to close
  the password file with endpwent().
* src/login.c: Remove unneeded setpwent() (only xgetpwnam is
  called before).
* src/login.c, src/newgrp.c: Fix typos in comments.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/ChangeLog	2008-04-16 21:52:46 UTC (rev 1974)
@@ -1,5 +1,24 @@
 2008-04-16  Nicolas François  <nicolas.francois at centraliens.net>
 
+	Ensure that getpwent() is used in setpwent(), getpwent(),
+	endpwend() sequences (ditto for getgrent(), getspent(), and
+	getsgent()). The only real (minor) issue was in login, which kept
+	the passwd file open.
+	* libmisc/entry.c: Remove unneeded setspent() and endspent() (only
+	getspnam is called in the middle).
+	* libmisc/find_new_ids.c: Make sure to close the password and
+	group files with endpwent() and endgrent().
+	* libmisc/pwdcheck.c: Remove unneeded endspent() (only getspnam()
+	is called before).
+	* src/lastlog.c, src/passwd.c, src/groupmod.c, src/faillog.c,
+	src/groups.c: Make sure to close
+	the password file with endpwent().
+	* src/login.c: Remove unneeded setpwent() (only xgetpwnam is
+	called before).
+	* src/login.c, src/newgrp.c: Fix typos in comments.
+
+2008-04-16  Nicolas François  <nicolas.francois at centraliens.net>
+
 	* NEWS, configure.in: Fix the detection of the audit, pam, and
 	selinux. Fail if the feature is requested but the library (or
 	header file) could not be found. If nothing is specified, enable

Modified: upstream/trunk/libmisc/entry.c
===================================================================
--- upstream/trunk/libmisc/entry.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/libmisc/entry.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -54,14 +54,11 @@
 		pwent->pw_dir = xstrdup (passwd->pw_dir);
 		pwent->pw_shell = xstrdup (passwd->pw_shell);
 #if !defined(AUTOSHADOW)
-		setspent ();
 		/* local, no need for xgetspnam */
 		if ((spwd = getspnam (name))) {
 			pwent->pw_passwd = xstrdup (spwd->sp_pwdp);
-			endspent ();
 			return;
 		}
-		endspent ();
 #endif
 		pwent->pw_passwd = xstrdup (passwd->pw_passwd);
 	}

Modified: upstream/trunk/libmisc/find_new_ids.c
===================================================================
--- upstream/trunk/libmisc/find_new_ids.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/libmisc/find_new_ids.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -65,6 +65,7 @@
 			user_id = pwd->pw_uid + 1;
 		}
 	}
+	endpwent ();
 
 	/*
 	 * If a user with UID equal to UID_MAX exists, the above algorithm
@@ -146,6 +147,7 @@
 			group_id = grp->gr_gid + 1;
 		}
 	}
+	endgrent ();
 
 	/*
 	 * If a group with GID equal to GID_MAX exists, the above algorithm

Modified: upstream/trunk/libmisc/pwdcheck.c
===================================================================
--- upstream/trunk/libmisc/pwdcheck.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/libmisc/pwdcheck.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -46,7 +46,6 @@
 
 	if ((sp = getspnam (user))) /* !USE_PAM, no need for xgetspnam */
 		passwd = sp->sp_pwdp;
-	endspent ();
 	if (pw_auth (passwd, user, PW_LOGIN, (char *) 0) != 0) {
 		SYSLOG ((LOG_WARN, WRONGPWD2, user));
 		sleep (1);

Modified: upstream/trunk/src/faillog.c
===================================================================
--- upstream/trunk/src/faillog.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/faillog.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -170,6 +170,7 @@
 		while ( (pwent = getpwent ()) != NULL ) {
 			reset_one (pwent->pw_uid);
 		}
+		endpwent ();
 	}
 }
 
@@ -246,8 +247,10 @@
 		setmax_one (user, max);
 	} else {
 		setpwent ();
-		while ((pwent = getpwent ()))
+		while ( (pwent = getpwent ()) != NULL ) {
 			setmax_one (pwent->pw_uid, max);
+		}
+		endpwent ();
 	}
 }
 
@@ -288,8 +291,10 @@
 		set_locktime_one (user, locktime);
 	} else {
 		setpwent ();
-		while ((pwent = getpwent ()))
+		while ( (pwent = getpwent ()) != NULL ) {
 			set_locktime_one (pwent->pw_uid, locktime);
+		}
+		endpwent ();
 	}
 }
 

Modified: upstream/trunk/src/groupmod.c
===================================================================
--- upstream/trunk/src/groupmod.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/groupmod.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -547,6 +547,7 @@
 			}
 		}
 	}
+	endpwent ();
 }
 
 /*

Modified: upstream/trunk/src/groups.c
===================================================================
--- upstream/trunk/src/groups.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/groups.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -57,13 +57,12 @@
 	struct passwd *pwd;
 	int flag = 0;
 
-	setgrent ();
-
 	/* local, no need for xgetpwnam */
 	if ((pwd = getpwnam (member)) == 0) {
 		fprintf (stderr, _("%s: unknown user %s\n"), Prog, member);
 		exit (1);
 	}
+	setgrent ();
 	while ((grp = getgrent ())) {
 		if (is_on_list (grp->gr_mem, member)) {
 			if (groups++)
@@ -74,6 +73,7 @@
 				flag = 1;
 		}
 	}
+	endgrent ();
 	/* local, no need for xgetgrgid */
 	if (!flag && (grp = getgrgid (pwd->pw_gid))) {
 		if (groups++)

Modified: upstream/trunk/src/lastlog.c
===================================================================
--- upstream/trunk/src/lastlog.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/lastlog.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -128,7 +128,7 @@
 	uid_t user;
 
 	setpwent ();
-	while ((pwent = getpwent ())) {
+	while ( (pwent = getpwent ()) != NULL ) {
 		user = pwent->pw_uid;
 		if (uflg &&
 		    ((umin != -1 && user < (uid_t)umin) ||
@@ -149,6 +149,7 @@
 
 		print_one (pwent);
 	}
+	endpwent ();
 }
 
 int main (int argc, char **argv)

Modified: upstream/trunk/src/login.c
===================================================================
--- upstream/trunk/src/login.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/login.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -738,7 +738,6 @@
 		 */
 		retcode =
 		    pam_get_item (pamh, PAM_USER, (const void **)ptr_pam_user);
-		setpwent ();
 		pwd = xgetpwnam (pam_user);
 		if (!pwd) {
 			SYSLOG ((LOG_ERR, "xgetpwnam(%s) failed",
@@ -962,7 +961,7 @@
 	if (pwent.pw_shell[0] == '*') {	/* subsystem root */
 		pwent.pw_shell++;	/* skip the '*' */
 		subsystem (&pwent);	/* figure out what to execute */
-		subroot++;	/* say i was here again */
+		subroot++;	/* say I was here again */
 		endpwent ();	/* close all of the file which were */
 		endgrent ();	/* open in the original rooted file */
 		endspent ();	/* system. they will be re-opened */

Modified: upstream/trunk/src/newgrp.c
===================================================================
--- upstream/trunk/src/newgrp.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/newgrp.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -695,7 +695,7 @@
 		prog = "/bin/sh";
 
 	/*
-	 * Now i try to find the basename of the login shell. This will
+	 * Now I try to find the basename of the login shell. This will
 	 * become argv[0] of the spawned command.
 	 */
 	cp = Basename ((char *) prog);

Modified: upstream/trunk/src/passwd.c
===================================================================
--- upstream/trunk/src/passwd.c	2008-04-16 21:24:14 UTC (rev 1973)
+++ upstream/trunk/src/passwd.c	2008-04-16 21:52:46 UTC (rev 1974)
@@ -848,8 +848,10 @@
 			exit (E_NOPERM);
 		}
 		setpwent ();
-		while ((pw = getpwent ()))
+		while ( (pw = getpwent ()) != NULL ) {
 			print_status (pw);
+		}
+		endpwent ();
 		exit (E_SUCCESS);
 	}
 #if 0




More information about the Pkg-shadow-commits mailing list