Date: Thu, 25 Aug 2005 16:15:40 +0300 From: Nikolay Kalev <nkalev@gmail.com> To: Fredrik Lindberg <fli+freebsd-current@shapeshifter.se>, freebsd-current@freebsd.org Subject: Re: Coredump in chkgrp (was Re: unknown coredump !) Message-ID: <430DC47C.9090908@gmail.com> In-Reply-To: <430DAE4D.60009@shapeshifter.se> References: <430C36BD.1020808@gmail.com> <20050824222516.GA1106@wantadilla.lemis.com> <430D665B.9030108@gmail.com> <430D7853.8070407@freebsd.org> <430DAE4D.60009@shapeshifter.se>
next in thread | previous in thread | raw e-mail | index | archive | help
Fredrik Lindberg wrote: > Colin Percival wrote: > >> [Bug report CCed to author of bug] >> >> Nikolay Kalev wrote: >> >>> chkgrp: /etc/group: line 30: missing field(s) >>> Segmentation fault (core dumped) >>> Exit 3 >>> >>> so i found the problem in my group file there was a bugy line that i >>> added ... i;m not sure if this is normal to coredump when the syntax in >>> /etc/group is mistaken ??? >>> >>> the line was : "user:1001:" and it has to be "user:*:1001:" >> >> >> >> This bug was added in revision 1.9 of src/usr.sbin/chkgrp/chkgrp.c. If >> a line of the group file has the wrong number of fields, the pointers >> f[0], f[1], f[2], and f[3] might point at deadc0de; prior to this >> revision, >> the number of fields was checked first and processing halted if it was >> wrong. >> >> I'm busy for the next few days, but if this is still unfixed on >> Monday I'll >> take care of it. >> >> Colin Percival > > > Here is a patch that should fix this. > > Fredrik Lindberg > >------------------------------------------------------------------------ > >Index: chkgrp.c >=================================================================== >RCS file: /home/ncvs/src/usr.sbin/chkgrp/chkgrp.c,v >retrieving revision 1.10 >diff -u -r1.10 chkgrp.c >--- chkgrp.c 4 Aug 2005 12:44:36 -0000 1.10 >+++ chkgrp.c 25 Aug 2005 10:50:25 -0000 >@@ -133,18 +133,20 @@ > } > > /* check that none of the fields contain whitespace */ >- for (k = 0; k < 4; k++) { >- if (strcspn(f[k], " \t") != strlen(f[k])) { >+ for (i = 0; i < k; i++) { >+ if (strcspn(f[i], " \t") != strlen(f[i])) { > warnx("%s: line %d: field %d contains whitespace", >- gfn, n, k+1); >+ gfn, n, i+1); > e++; > } > } > > /* 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++; >+ if (k > 2) { >+ if (strspn(f[2], "0123456789") != strlen(f[2])) { >+ warnx("%s: line %d: GID is not numeric", gfn, n); >+ e++; >+ } > } > > #if 0 > > Ok thanks for the patch it works ok now :-) no coredumps !
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?430DC47C.9090908>