[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