Hello CHICKEN users,

Recently, we fixed a problem related to the use of POSIX select(),
which was assigned CVE-2012-6122.
See http://lists.nongnu.org/archive/html/chicken-users/2012-06/msg00031.html
for more details on the original bug.

We fixed the scheduler, but there remained other places in CHICKEN where
select() was still in use:

- The R5RS char-ready? procedure when invoked on stream ports or custom
   input ports created by the process procedure from unit posix (in *NIX)
- The tcp-accept-ready? procedure from unit tcp
- The file-select procedure from unit posix

These have now also been rewritten in terms of POSIX poll(), where
available.  This is on all supported platforms except Windows.
As before, there is no danger of buffer overrun on Windows, but
there is a situation where threads may never wake up.  There is no
known workaround.  A solution may be provided soon.

Currently all released versions of CHICKEN have this bug.  It has
been fixed in git master, commit 556108092774086b6c86c2e27daf3f740ffec091.
CHICKEN 4.9.0 will also include the bugfix.

The known workaround is still to limit the maximum number of open
descriptors using the Unix "ulimit -n" command, so that it matches the
value of FD_SETSIZE.  This value can be checked by compiling the
following one-line program with csc and running the resulting binary:

(print (foreign-value "FD_SETSIZE" int))

Kind regards,
The CHICKEN Team

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to