When a group is renamed then the group has been invalidated for sure.
In that case get the group information using the new name. Add a regression test about this bug PR: 193704 Reported by: az
This commit is contained in:
parent
1c1c418e52
commit
fb7830888d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=273772
@ -51,6 +51,7 @@ int
|
||||
pw_group(struct userconf * cnf, int mode, struct cargs * args)
|
||||
{
|
||||
int rc;
|
||||
struct carg *a_newname = getarg(args, 'l');
|
||||
struct carg *a_name = getarg(args, 'n');
|
||||
struct carg *a_gid = getarg(args, 'g');
|
||||
struct carg *arg;
|
||||
@ -140,8 +141,8 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
|
||||
if (a_gid)
|
||||
grp->gr_gid = (gid_t) atoi(a_gid->val);
|
||||
|
||||
if ((arg = getarg(args, 'l')) != NULL)
|
||||
grp->gr_name = pw_checkname((u_char *)arg->val, 0);
|
||||
if (a_newname != NULL)
|
||||
grp->gr_name = pw_checkname((u_char *)a_newname->val, 0);
|
||||
} else {
|
||||
if (a_name == NULL) /* Required */
|
||||
errx(EX_DATAERR, "group name required");
|
||||
@ -270,8 +271,10 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
|
||||
warn("group update");
|
||||
return EX_IOERR;
|
||||
}
|
||||
|
||||
arg = a_newname != NULL ? a_newname : a_name;
|
||||
/* grp may have been invalidated */
|
||||
if ((grp = GETGRNAM(a_name->val)) == NULL)
|
||||
if ((grp = GETGRNAM(arg->val)) == NULL)
|
||||
errx(EX_SOFTWARE, "group disappeared during update");
|
||||
|
||||
pw_log(cnf, mode, W_GROUP, "%s(%ld)", grp->gr_name, (long) grp->gr_gid);
|
||||
|
@ -27,8 +27,19 @@ groupmod_invalid_user_body() {
|
||||
atf_check -s exit:0 pw -V ${HOME} groupmod test -d foo
|
||||
}
|
||||
|
||||
atf_test_case groupmod_bug_193704
|
||||
groupmod_bug_193704_head() {
|
||||
atf_set "descr" "Regression test for the #193704 bug"
|
||||
}
|
||||
groupmod_bug_193704_body() {
|
||||
populate_etc_skel
|
||||
atf_check -s exit:0 -x pw -V ${HOME} groupadd test
|
||||
atf_check -s exit:0 -x pw -V ${HOME} groupmod test -l newgroupname
|
||||
atf_check -s exit:65 -e match:"^pw: unknown group" -x pw -V ${HOME} groupshow test
|
||||
}
|
||||
|
||||
atf_init_test_cases() {
|
||||
atf_add_test_case groupmod_user
|
||||
atf_add_test_case groupmod_invalid_user
|
||||
atf_add_test_case groupmod_bug_193704
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user