Be careful with fdopendir() on RELENG_7

Garrett Cooper yanefbsd at
Tue Mar 30 00:45:24 UTC 2010

On Mon, Mar 29, 2010 at 12:53 PM, Christian Weisgerber
<naddy at> wrote:
> There is a silly bug in RELENG_7 up to and including RELENG_7_3:
> fdopendir(3) is available in libc, but the prototype is missing
> from <dirent.h>.
> This can have unexpected consequences.  A configure script can
> notice that fdopendir() is available, but due to the missing
> prototype, the function will be typed as the default
>  int fdopendir();
> This is bad.  fdopendir() returns a pointer and unless correctly
> prototyped, the return value will be truncated from 64 to 32 bits
> on LP64 platforms.
> So if you notice that something picks up the fdopendir() function
> you need to either disable it for 702102 to 703100 (inclusive) or
> make sure that the correct prototype
>  DIR *fdopendir(int);
> is wedged in somehow.
> This isn't a hypothetical concern.  When I initially tried gtar
> 1.23 on 7.3/amd64, it left a trail of coredumps because of this.

    Is there a bug outstanding for this?

More information about the freebsd-ports mailing list