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>
