X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cprogs%2Freally.c;h=f4cfa08692a99821f9309680d719da7d48456c47;hb=f0979352515324563d91f949eb123990dff35c36;hp=cce79462e96bda4a33b8367f82c199eb2bb74be6;hpb=fe05759ac0302e37341d4a4d67ec90b7cffeabab;p=chiark-utils.git diff --git a/cprogs/really.c b/cprogs/really.c index cce7946..f4cfa08 100644 --- a/cprogs/really.c +++ b/cprogs/really.c @@ -48,6 +48,15 @@ static const char *opt_user, *opt_useronly; static int opt_groupsclear= 0, opt_ngids= 0, opt_uidonly= -1; static int opt_gids[512]; +static void af_uidonly(const struct cmdinfo *cip, const char *value) { + unsigned long ul; + char *ep; + + ul= strtoul(value,&ep,10); + if (*ep) { fprintf(stderr,"bad uid `%s'\n",value); exit(-1); } + opt_uidonly= ul; +} + static void af_group(const struct cmdinfo *cip, const char *value) { struct group *gr; @@ -76,7 +85,7 @@ static void af_help(const struct cmdinfo *cip, const char *value) { static const struct cmdinfo cmdinfos[]= { { "user", 'u', 1, 0, &opt_user, 0, }, { "useronly", 'i', 1, 0, &opt_useronly, 0 }, - { "uidonly", 'I', 1, &opt_uidonly, 0, 0 }, + { "uidonly", 'I', 1, 0, 0, af_uidonly }, { "groupsclear", 'z', 0, &opt_groupsclear, 0, 0, 1 }, { "group", 'g', 1, 0, 0, af_group }, { "gid", 'G', 1, 0, 0, af_gid }, @@ -94,7 +103,7 @@ static void checkroot(void) { #ifdef REALLY_CHECK_GID static void checkroot(void) { gid_t groups[512]; - int r; + int r, i; r= getgid(); if (r==REALLY_CHECK_GID) return; if (r<0) { perror("getgid check"); exit(-1); }