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

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Sat Jul 26 16:11:51 UTC 2008


Author: nekral-guest
Date: 2008-07-26 16:11:49 +0000 (Sat, 26 Jul 2008)
New Revision: 2210

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/NEWS
   upstream/trunk/src/groupmems.c
Log:
2008-07-26  Nicolas Fran?\195?\167ois  <nicolas.francois at centraliens.net>

	* src/groupmems.c: Added Prog global variable to indicate the name
	of the program in error messages.

2008-07-22  Luk?\195?\161?\197?\161 Kukl?\195?\173nek  <lkukline at redhat.com>

	* NEWS, src/groupmems.c: Check if the user added to group actually
	exist. RedHat bug #455603
	* NEWS, src/groupmems.c: Check if the group exists in the group
	local database (/etc/group). RedHat bug #456088



Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-07-21 22:45:49 UTC (rev 2209)
+++ upstream/trunk/ChangeLog	2008-07-26 16:11:49 UTC (rev 2210)
@@ -1,3 +1,15 @@
+2008-07-26  Nicolas François  <nicolas.francois at centraliens.net>
+
+	* src/groupmems.c: Added Prog global variable to indicate the name
+	of the program in error messages.
+
+2008-07-22  Lukáš Kuklínek  <lkukline at redhat.com>
+
+	* NEWS, src/groupmems.c: Check if the user added to group actually
+	exist. RedHat bug #455603
+	* NEWS, src/groupmems.c: Check if the group exists in the group
+	local database (/etc/group). RedHat bug #456088
+
 2008-07-22  Nicolas François  <nicolas.francois at centraliens.net>
 
 	* lib/prototypes.h: Fix getrange prototype.

Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS	2008-07-21 22:45:49 UTC (rev 2209)
+++ upstream/trunk/NEWS	2008-07-26 16:11:49 UTC (rev 2210)
@@ -10,6 +10,9 @@
 - usermod
   * Allow adding LDAP users (or any user not present in the local passwd
     file) to local groups
+- groupmems
+  * Check if user exist before they are added to groups.
+  * Avoid segfault in case the specified group does not exist in /etc/group.
 
 shadow-4.1.2 -> shadow-4.1.2.1						26-06-2008
 

Modified: upstream/trunk/src/groupmems.c
===================================================================
--- upstream/trunk/src/groupmems.c	2008-07-21 22:45:49 UTC (rev 2209)
+++ upstream/trunk/src/groupmems.c	2008-07-26 16:11:49 UTC (rev 2210)
@@ -54,6 +54,8 @@
 #define EXIT_NOT_PRIMARY	5	/* not primary owner of group  */
 #define EXIT_NOT_MEMBER		6	/* member of group does not exist */
 #define EXIT_MEMBER_EXISTS	7	/* member of group already exists */
+#define EXIT_INVALID_USER	8	/* specified user does not exist */
+#define EXIT_INVALID_GROUP	9	/* specified group does not exist */
 
 #define TRUE 1
 #define FALSE 0
@@ -67,6 +69,7 @@
 static int purge = FALSE;
 static int list = FALSE;
 static int exclusive = 0;
+static char *Prog;
 
 static int isroot (void)
 {
@@ -187,6 +190,11 @@
 		{NULL, 0, NULL, '\0'}
 	};
 
+	/*
+	 * Get my name so that I can use it to report errors.
+	 */
+	Prog = Basename (argv[0]);
+
 	(void) setlocale (LC_ALL, "");
 	(void) bindtextdomain (PACKAGE, LOCALEDIR);
 	(void) textdomain (PACKAGE);
@@ -223,6 +231,12 @@
 		usage ();
 	}
 
+	if (getpwnam(adduser) == NULL) {
+		fprintf (stderr, _("%s: user `%s' does not exist\n")
+		         Prog, adduser);
+		exit (EXIT_INVALID_USERNAME);
+	}
+
 	if (!isroot () && NULL != thisgroup) {
 		fputs (_("Only root can add members to different groups\n"),
 		       stderr);
@@ -284,6 +298,12 @@
 
 	grp = (struct group *) gr_locate (name);
 
+	if (grp == NULL) {
+		fprintf (stderr, _("%s: `%s' not found in /etc/group\n"),
+		         Prog, name);
+		exit (EXIT_READ_GROUP);
+	}
+
 	if (NULL != adduser) {
 		addtogroup (adduser, grp->gr_mem);
 		gr_update (grp);




More information about the Pkg-shadow-commits mailing list