Deleted Added
full compact
newgrp.c (229668) newgrp.c (231994)
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * SUCH DAMAGE.
25 */
26
27/*
28 * newgrp -- change to a new group
29 */
30
31#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2002 Tim J. Robbins.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * SUCH DAMAGE.
25 */
26
27/*
28 * newgrp -- change to a new group
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/usr.bin/newgrp/newgrp.c 229668 2012-01-05 23:08:11Z ghelmer $");
32__FBSDID("$FreeBSD: head/usr.bin/newgrp/newgrp.c 231994 2012-02-22 06:27:20Z kevlo $");
33
34#include <sys/types.h>
35
36#include <err.h>
37#include <errno.h>
38#include <grp.h>
39#include <libgen.h>
40#include <limits.h>

--- 105 unchanged lines hidden (view full) ---

146static void
147addgroup(const char *grpname)
148{
149 gid_t *grps;
150 long lgid, ngrps_max;
151 int dbmember, i, ngrps;
152 gid_t egid;
153 struct group *grp;
33
34#include <sys/types.h>
35
36#include <err.h>
37#include <errno.h>
38#include <grp.h>
39#include <libgen.h>
40#include <limits.h>

--- 105 unchanged lines hidden (view full) ---

146static void
147addgroup(const char *grpname)
148{
149 gid_t *grps;
150 long lgid, ngrps_max;
151 int dbmember, i, ngrps;
152 gid_t egid;
153 struct group *grp;
154 char *ep, *pass;
154 char *ep, *pass, *cryptpw;
155 char **p;
156
157 egid = getegid();
158
159 /* Try it as a group name, then a group id. */
160 if ((grp = getgrnam(grpname)) == NULL)
161 if ((lgid = strtol(grpname, &ep, 10)) <= 0 || *ep != '\0' ||
162 (grp = getgrgid((gid_t)lgid)) == NULL ) {

--- 10 unchanged lines hidden (view full) ---

173 dbmember = 1;
174 for (p = grp->gr_mem; *p != NULL; p++)
175 if (strcmp(*p, pwd->pw_name) == 0) {
176 dbmember = 1;
177 break;
178 }
179 if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) {
180 pass = getpass("Password:");
155 char **p;
156
157 egid = getegid();
158
159 /* Try it as a group name, then a group id. */
160 if ((grp = getgrnam(grpname)) == NULL)
161 if ((lgid = strtol(grpname, &ep, 10)) <= 0 || *ep != '\0' ||
162 (grp = getgrgid((gid_t)lgid)) == NULL ) {

--- 10 unchanged lines hidden (view full) ---

173 dbmember = 1;
174 for (p = grp->gr_mem; *p != NULL; p++)
175 if (strcmp(*p, pwd->pw_name) == 0) {
176 dbmember = 1;
177 break;
178 }
179 if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) {
180 pass = getpass("Password:");
181 if (pass == NULL ||
182 strcmp(grp->gr_passwd, crypt(pass, grp->gr_passwd)) != 0) {
181 if (pass == NULL)
182 return;
183 cryptpw = crypt(pass, grp->gr_passwd);
184 if (cryptpw == NULL || strcmp(grp->gr_passwd, cryptpw) != 0) {
183 fprintf(stderr, "Sorry\n");
184 return;
185 }
186 }
187
188 ngrps_max = sysconf(_SC_NGROUPS_MAX) + 1;
189 if ((grps = malloc(sizeof(gid_t) * ngrps_max)) == NULL)
190 err(1, "malloc");

--- 118 unchanged lines hidden ---
185 fprintf(stderr, "Sorry\n");
186 return;
187 }
188 }
189
190 ngrps_max = sysconf(_SC_NGROUPS_MAX) + 1;
191 if ((grps = malloc(sizeof(gid_t) * ngrps_max)) == NULL)
192 err(1, "malloc");

--- 118 unchanged lines hidden ---