2008-07-26 Nicolas François <nicolas.francois@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@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
This commit is contained in:
parent
d4eced9b84
commit
b684ea837d
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
2008-07-26 Nicolas François <nicolas.francois@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@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@centraliens.net>
|
2008-07-22 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
* lib/prototypes.h: Fix getrange prototype.
|
* lib/prototypes.h: Fix getrange prototype.
|
||||||
|
3
NEWS
3
NEWS
@ -10,6 +10,9 @@ shadow-4.1.2.1 -> shadow-4.1.3 UNRELEASED
|
|||||||
- usermod
|
- usermod
|
||||||
* Allow adding LDAP users (or any user not present in the local passwd
|
* Allow adding LDAP users (or any user not present in the local passwd
|
||||||
file) to local groups
|
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
|
shadow-4.1.2 -> shadow-4.1.2.1 26-06-2008
|
||||||
|
|
||||||
|
@ -54,6 +54,8 @@
|
|||||||
#define EXIT_NOT_PRIMARY 5 /* not primary owner of group */
|
#define EXIT_NOT_PRIMARY 5 /* not primary owner of group */
|
||||||
#define EXIT_NOT_MEMBER 6 /* member of group does not exist */
|
#define EXIT_NOT_MEMBER 6 /* member of group does not exist */
|
||||||
#define EXIT_MEMBER_EXISTS 7 /* member of group already exists */
|
#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 TRUE 1
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
@ -67,6 +69,7 @@ static char *thisgroup = NULL;
|
|||||||
static int purge = FALSE;
|
static int purge = FALSE;
|
||||||
static int list = FALSE;
|
static int list = FALSE;
|
||||||
static int exclusive = 0;
|
static int exclusive = 0;
|
||||||
|
static char *Prog;
|
||||||
|
|
||||||
static int isroot (void)
|
static int isroot (void)
|
||||||
{
|
{
|
||||||
@ -187,6 +190,11 @@ int main (int argc, char **argv)
|
|||||||
{NULL, 0, NULL, '\0'}
|
{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) setlocale (LC_ALL, "");
|
||||||
(void) bindtextdomain (PACKAGE, LOCALEDIR);
|
(void) bindtextdomain (PACKAGE, LOCALEDIR);
|
||||||
(void) textdomain (PACKAGE);
|
(void) textdomain (PACKAGE);
|
||||||
@ -223,6 +231,12 @@ int main (int argc, char **argv)
|
|||||||
usage ();
|
usage ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getpwnam(adduser) == NULL) {
|
||||||
|
fprintf (stderr, _("%s: user `%s' does not exist\n")
|
||||||
|
Prog, adduser);
|
||||||
|
exit (EXIT_INVALID_USERNAME);
|
||||||
|
}
|
||||||
|
|
||||||
if (!isroot () && NULL != thisgroup) {
|
if (!isroot () && NULL != thisgroup) {
|
||||||
fputs (_("Only root can add members to different groups\n"),
|
fputs (_("Only root can add members to different groups\n"),
|
||||||
stderr);
|
stderr);
|
||||||
@ -284,6 +298,12 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
grp = (struct group *) gr_locate (name);
|
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) {
|
if (NULL != adduser) {
|
||||||
addtogroup (adduser, grp->gr_mem);
|
addtogroup (adduser, grp->gr_mem);
|
||||||
gr_update (grp);
|
gr_update (grp);
|
||||||
|
Loading…
Reference in New Issue
Block a user