View | Details | Raw Unified | Return to bug 187310
Collapse All | Expand All

(-)usr.sbin/pw/pw_group.c (-6 / +13 lines)
Lines 227-236 Link Here
227
		else if (arg->ch == 'm') {
227
		else if (arg->ch == 'm') {
228
			int	k = 0;
228
			int	k = 0;
229
229
230
			while (grp->gr_mem[k] != NULL) {
230
			if (grp->gr_mem != NULL) {
231
				if (extendarray(&members, &grmembers, i + 2) != -1)
231
				while (grp->gr_mem[k] != NULL) {
232
					members[i++] = grp->gr_mem[k];
232
					if (extendarray(&members, &grmembers, i + 2) != -1)
233
				k++;
233
						members[i++] = grp->gr_mem[k];
234
					k++;
235
				}
234
			}
236
			}
235
		}
237
		}
236
238
Lines 311-316 Link Here
311
	int k;
313
	int k;
312
	struct passwd *pwd;
314
	struct passwd *pwd;
313
315
316
	if (grp->gr_mem == NULL)
317
		return;
318
314
	k = 0;
319
	k = 0;
315
	while (grp->gr_mem[k] != NULL) {
320
	while (grp->gr_mem[k] != NULL) {
316
		matchFound = false;
321
		matchFound = false;
Lines 415-422 Link Here
415
		printf("Group Name: %-15s   #%lu\n"
420
		printf("Group Name: %-15s   #%lu\n"
416
		       "   Members: ",
421
		       "   Members: ",
417
		       grp->gr_name, (long) grp->gr_gid);
422
		       grp->gr_name, (long) grp->gr_gid);
418
		for (i = 0; grp->gr_mem[i]; i++)
423
		if (grp->gr_mem != NULL) {
419
			printf("%s%s", i ? "," : "", grp->gr_mem[i]);
424
			for (i = 0; grp->gr_mem[i]; i++)
425
				printf("%s%s", i ? "," : "", grp->gr_mem[i]);
426
		}
420
		fputs("\n\n", stdout);
427
		fputs("\n\n", stdout);
421
	}
428
	}
422
	return EXIT_SUCCESS;
429
	return EXIT_SUCCESS;
(-)usr.sbin/pw/pw_user.c (-14 / +19 lines)
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();

Return to bug 187310