Lines 425-443
Link Here
|
425 |
} |
425 |
} |
426 |
|
426 |
|
427 |
grp = GETGRNAM(a_name->val); |
427 |
grp = GETGRNAM(a_name->val); |
428 |
if (grp != NULL && *grp->gr_mem == NULL) |
428 |
if (grp != NULL && (grp->gr_mem == NULL || *grp->gr_mem == NULL)) |
429 |
delgrent(GETGRNAM(a_name->val)); |
429 |
delgrent(GETGRNAM(a_name->val)); |
430 |
SETGRENT(); |
430 |
SETGRENT(); |
431 |
while ((grp = GETGRENT()) != NULL) { |
431 |
while ((grp = GETGRENT()) != NULL) { |
432 |
int i; |
432 |
int i; |
433 |
char group[MAXLOGNAME]; |
433 |
char group[MAXLOGNAME]; |
434 |
for (i = 0; grp->gr_mem[i] != NULL; i++) { |
434 |
if (grp->gr_mem != NULL) { |
435 |
if (!strcmp(grp->gr_mem[i], a_name->val)) { |
435 |
for (i = 0; grp->gr_mem[i] != NULL; i++) { |
436 |
while (grp->gr_mem[i] != NULL) { |
436 |
if (!strcmp(grp->gr_mem[i], a_name->val)) { |
437 |
grp->gr_mem[i] = grp->gr_mem[i+1]; |
437 |
while (grp->gr_mem[i] != NULL) { |
438 |
} |
438 |
grp->gr_mem[i] = grp->gr_mem[i+1]; |
439 |
strlcpy(group, grp->gr_name, MAXLOGNAME); |
439 |
} |
440 |
chggrent(group, grp); |
440 |
strlcpy(group, grp->gr_name, MAXLOGNAME); |
|
|
441 |
chggrent(group, grp); |
442 |
} |
441 |
} |
443 |
} |
442 |
} |
444 |
} |
443 |
} |
445 |
} |
Lines 908-914
Link Here
|
908 |
errx(EX_NOUSER, "group `%s' is not defined", a_gid->val); |
910 |
errx(EX_NOUSER, "group `%s' is not defined", a_gid->val); |
909 |
} |
911 |
} |
910 |
gid = grp->gr_gid; |
912 |
gid = grp->gr_gid; |
911 |
} else if ((grp = GETGRNAM(nam)) != NULL && grp->gr_mem[0] == NULL) { |
913 |
} else if ((grp = GETGRNAM(nam)) != NULL && (grp->gr_mem == NULL || grp->gr_mem[0] == NULL)) { |
912 |
gid = grp->gr_gid; /* Already created? Use it anyway... */ |
914 |
gid = grp->gr_gid; /* Already created? Use it anyway... */ |
913 |
} else { |
915 |
} else { |
914 |
struct cargs grpargs; |
916 |
struct cargs grpargs; |
Lines 1182-1195
Link Here
|
1182 |
while ((grp=GETGRENT()) != NULL) |
1184 |
while ((grp=GETGRENT()) != NULL) |
1183 |
{ |
1185 |
{ |
1184 |
int i = 0; |
1186 |
int i = 0; |
1185 |
while (grp->gr_mem[i] != NULL) |
1187 |
if (grp->gr_mem != NULL) |
1186 |
{ |
1188 |
{ |
1187 |
if (strcmp(grp->gr_mem[i], pwd->pw_name)==0) |
1189 |
while (grp->gr_mem[i] != NULL) |
1188 |
{ |
1190 |
{ |
1189 |
printf(j++ == 0 ? " Groups: %s" : ",%s", grp->gr_name); |
1191 |
if (strcmp(grp->gr_mem[i], pwd->pw_name)==0) |
1190 |
break; |
1192 |
{ |
|
|
1193 |
printf(j++ == 0 ? " Groups: %s" : ",%s", grp->gr_name); |
1194 |
break; |
1195 |
} |
1196 |
++i; |
1191 |
} |
1197 |
} |
1192 |
++i; |
|
|
1193 |
} |
1198 |
} |
1194 |
} |
1199 |
} |
1195 |
ENDGRENT(); |
1200 |
ENDGRENT(); |