Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Mar 2010 19:53:49 +0000 (UTC)
From:      naddy@mips.inka.de (Christian Weisgerber)
To:        freebsd-ports@freebsd.org
Subject:   Be careful with fdopendir() on RELENG_7
Message-ID:  <hor0gd$6h2$1@lorvorc.mips.inka.de>

next in thread | raw e-mail | index | archive | help
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.

-- 
Christian "naddy" Weisgerber                          naddy@mips.inka.de




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?hor0gd$6h2$1>