On Tue, 2004-11-02 at 14:56, Nicholas Clark wrote: > ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-5.8.x/ > ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-current/
Other than comments, there is no difference between reentr.* at the 5.8.x URL and that in the broken 5.8.3-18 in Fedora Core 2. perl-current source is organized differently but the relevant code seems to be the same (reentr.c line 694). It erroneously assumes that errno is meaningful. The obvious fix is to remove the "|| (errno == ERANGE)" clause. However, there may be other libraries out there with different definitions of getXXXent_r. Note that the getXXXent_r functions can be rather complicated, searching not just /etc/group but optionally NIS too under contro of nsswitch.conf. They may execute a large number of system calls so errno may be clobbered many times (or not at all). Hence the need to only check the return value.
