diff --git a/ChangeLog b/ChangeLog index 4f370362..326531ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-08 Nicolas François + + * lib/commonio.c (commonio_remove): Fail when the name to be + removed is used by different entries (like commonio_update does). + * NEWS: This fix the behavior of groupdel when the system is not + configured to support split group but different group entries + have the name of the group to be deleted. + 2008-03-08 Nicolas François * NEWS, src/useradd.c: Make sure the passwd, group, shadow, and diff --git a/NEWS b/NEWS index 9ba6dcc5..39e68f06 100644 --- a/NEWS +++ b/NEWS @@ -36,6 +36,8 @@ shadow-4.1.0 -> shadow-4.1.1 UNRELEASED * Do not fail if the group does not exist in the gshadow file. * Do not rewrite the group or gshadow file in case of error. * Make sure the group and gshadow files are unlocked on exit. + * Fail if the system is not configured to support split groups and + different group entries have the name of the group to be deleted. - groupmems * Fix buffer overflow when adding an user to a group. Thanks to Peter Vrabec. - groupmod diff --git a/lib/commonio.c b/lib/commonio.c index 67953bdf..4571754d 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -886,6 +886,10 @@ int commonio_remove (struct commonio_db *db, const char *name) errno = ENOENT; return 0; } + if (next_entry_by_name (db, p->next, name)) { + fprintf (stderr, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), name, db->filename); + return 0; + } commonio_del_entry (db, p);