diff options
author | eadler <eadler@FreeBSD.org> | 2012-11-15 15:06:03 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-11-15 15:06:03 +0000 |
commit | 84a8b19d55a789fa90e919f970e259cbfa7786ed (patch) | |
tree | 8a45defd3b9e111ab8da66c4d4e4e0029975c45b /usr.sbin | |
parent | 25428696124d0d8552945972d8265eedb62d11c6 (diff) | |
download | FreeBSD-src-84a8b19d55a789fa90e919f970e259cbfa7786ed.zip FreeBSD-src-84a8b19d55a789fa90e919f970e259cbfa7786ed.tar.gz |
Check the range of the gid
Approved by: cperciva
MFC after: 1 week
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/chkgrp/chkgrp.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/usr.sbin/chkgrp/chkgrp.c b/usr.sbin/chkgrp/chkgrp.c index ac40ed5..2dd41a8 100644 --- a/usr.sbin/chkgrp/chkgrp.c +++ b/usr.sbin/chkgrp/chkgrp.c @@ -30,7 +30,10 @@ __FBSDID("$FreeBSD$"); #include <err.h> +#include <errno.h> #include <ctype.h> +#include <limits.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -150,6 +153,18 @@ main(int argc, char *argv[]) warnx("%s: line %d: GID is not numeric", gfn, n); e++; } + + /* check the range of the group id */ + errno = 0; + unsigned long groupid = strtoul(f[2], NULL, 10); + if (errno != 0) { + warnx("%s: line %d: strtoul failed", gfn, n); + } + else if (groupid > GID_MAX) { + warnx("%s: line %d: group id is too large (> %ju)", + gfn, n, (uintmax_t)GID_MAX); + e++; + } #if 0 /* entry is correct, so print it */ |