Date: Thu, 15 Nov 2012 15:06:24 +0000 (UTC) From: Eitan Adler <eadler@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r243083 - head/usr.sbin/chkgrp Message-ID: <201211151506.qAFF6OEE004167@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: eadler Date: Thu Nov 15 15:06:24 2012 New Revision: 243083 URL: http://svnweb.freebsd.org/changeset/base/243083 Log: Be declarative about if an error has occured. Fixes overflow on very large group files with lots of errors. This is unlikely to occur in practice. Approved by: cperciva MFC after: 1 week Modified: head/usr.sbin/chkgrp/chkgrp.c Modified: head/usr.sbin/chkgrp/chkgrp.c ============================================================================== --- head/usr.sbin/chkgrp/chkgrp.c Thu Nov 15 15:06:21 2012 (r243082) +++ head/usr.sbin/chkgrp/chkgrp.c Thu Nov 15 15:06:24 2012 (r243083) @@ -81,7 +81,7 @@ main(int argc, char *argv[]) break; if (len > 0 && line[len - 1] != '\n') { warnx("%s: line %d: no newline character", gfn, n); - e++; + e = 1; } while (len && isspace(line[len-1])) len--; @@ -114,14 +114,14 @@ main(int argc, char *argv[]) warnx("%s: line %d: missing field(s)", gfn, n); for ( ; k < 4; k++) f[k] = empty; - e++; + e = 1; } for (cp = f[0] ; *cp ; cp++) { if (!isalnum(*cp) && *cp != '.' && *cp != '_' && *cp != '-' && (cp > f[0] || *cp != '+')) { warnx("%s: line %d: '%c' invalid character", gfn, n, *cp); - e++; + e = 1; } } @@ -129,14 +129,14 @@ main(int argc, char *argv[]) if (!isalnum(*cp) && *cp != '.' && *cp != '_' && *cp != '-' && *cp != ',') { warnx("%s: line %d: '%c' invalid character", gfn, n, *cp); - e++; + e = 1; } } /* check if fourth field ended with a colon */ if (i < len) { warnx("%s: line %d: too many fields", gfn, n); - e++; + e = 1; } /* check that none of the fields contain whitespace */ @@ -144,14 +144,14 @@ main(int argc, char *argv[]) if (strcspn(f[k], " \t") != strlen(f[k])) { warnx("%s: line %d: field %d contains whitespace", gfn, n, k+1); - e++; + e = 1; } } /* check that the GID is numeric */ if (strspn(f[2], "0123456789") != strlen(f[2])) { warnx("%s: line %d: GID is not numeric", gfn, n); - e++; + e = 1; } /* check the range of the group id */ @@ -163,7 +163,7 @@ main(int argc, char *argv[]) else if (groupid > GID_MAX) { warnx("%s: line %d: group id is too large (> %ju)", gfn, n, (uintmax_t)GID_MAX); - e++; + e = 1; } #if 0
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211151506.qAFF6OEE004167>