Coredump in chkgrp (was Re: unknown coredump !)
Nikolay Kalev
nkalev at gmail.com
Thu Aug 25 13:08:45 GMT 2005
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 !
More information about the freebsd-current
mailing list