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

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Mon Jan 21 23:33:44 UTC 2008


Author: nekral-guest
Date: 2008-01-21 23:33:43 +0000 (Mon, 21 Jan 2008)
New Revision: 1726

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/NEWS
   upstream/trunk/src/newgrp.c
Log:
* NEWS, src/newgrp.c: Fix segfault when an user returns to an
  unknown GID (either the user was deleted during the user's newgrp
  session or the user's passwd entry referenced an invalid group).
  Add a syslog warning in that case.
* src/newgrp.c: Add an end of line when reporting an invalid
  password.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-01-13 19:26:13 UTC (rev 1725)
+++ upstream/trunk/ChangeLog	2008-01-21 23:33:43 UTC (rev 1726)
@@ -1,3 +1,12 @@
+2008-01-22  Nicolas François  <nicolas.francois at centraliens.net>
+
+	* NEWS, src/newgrp.c: Fix segfault when an user returns to an
+	unknown GID (either the user was deleted during the user's newgrp
+	session or the user's passwd entry referenced an invalid group).
+	Add a syslog warning in that case.
+	* src/newgrp.c: Add an end of line when reporting an invalid
+	password.
+
 2008-01-12  Nicolas François  <nicolas.francois at centraliens.net>
 
 	* NEWS, src/useradd.c: Fix the handling of the --defaults option

Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS	2008-01-13 19:26:13 UTC (rev 1725)
+++ upstream/trunk/NEWS	2008-01-21 23:33:43 UTC (rev 1726)
@@ -26,6 +26,10 @@
 - lastlog
   * Accept users specified as a numerical UID, or ranges of users (-user,
     user-, user1-user2).
+- newgrp
+  * Fix segfault when an user returns to an unknown GID (either the user
+    was deleted during the user's newgrp session or the user's passwd
+    entry referenced an invalid group). Add a syslog warning in that case.
 - newusers
   * The new users are no more added to the list of members of their groups
     because the membership is already set by their primary group.

Modified: upstream/trunk/src/newgrp.c
===================================================================
--- upstream/trunk/src/newgrp.c	2008-01-13 19:26:13 UTC (rev 1725)
+++ upstream/trunk/src/newgrp.c	2008-01-21 23:33:43 UTC (rev 1726)
@@ -169,7 +169,7 @@
 				 "Invalid password for group `%s' from `%s'",
 				 groupname, pwd->pw_name));
 			sleep (1);
-			fputs (_("Invalid password."), stderr);
+			fputs (_("Invalid password.\n"), stderr);
 			goto failure;
 		}
 	}
@@ -252,6 +252,8 @@
 		} else if (child) {
 			/* parent - wait for child to finish, then log session close */
 			int cst = 0;
+			gid_t gid = getgid();
+			struct group *grp = getgrgid (gid);
 
 			do {
 				errno = 0;
@@ -265,10 +267,22 @@
 			} while ((pid == child && WIFSTOPPED (cst)) ||
 				 (pid != child && errno == EINTR));
 			/* local, no need for xgetgrgid */
-			SYSLOG ((LOG_INFO,
-				 "user `%s' (login `%s' on %s) returned to group `%s'",
-				 name, loginname, tty,
-				 getgrgid (gid)->gr_name));
+			if (NULL != grp) {
+				SYSLOG ((LOG_INFO,
+				         "user `%s' (login `%s' on %s) returned to group `%s'",
+				         name, loginname, tty, grp->gr_name));
+			} else {
+				SYSLOG ((LOG_INFO,
+				         "user `%s' (login `%s' on %s) returned to group `%d'",
+				         name, loginname, tty, gid));
+				/* Either the user's passwd entry has a
+				 * GID that does not match with any group,
+				 * or the group was deleted while the user
+				 * was in a newgrp session.*/
+				SYSLOG ((LOG_WARN,
+				         "unknown GID `%u' used by user `%s'",
+				         gid, name));
+			}
 			closelog ();
 			exit (0);
 		}




More information about the Pkg-shadow-commits mailing list