fdopendir prototype on 7.3-RELEASE amd64

Klaus T. Aehlig aehlig at linta.de
Wed Jun 1 15:54:08 UTC 2011


[Please CC me, as I'm not subscribed to this list]

Hallo,

while dealing with PR ports/157274 [1], I found that the following
program cause a segmentation fault on 7.3-RELEASE amd64, even though 
my understanding of the man page of fdopendir(3) says it should not.

#include <fcntl.h>
#include <sys/types.h>
#include <dirent.h>

int main(int argc, char **argv) {
  DIR *dirp;
  int fd;

  fd = open(".", O_RDONLY);
  dirp = fdopendir(fd);
  (void) readdir(dirp);

}

Compiling gives the warning "assignment makes pointer from integer without a cast"
refering to the line with the fdopendir call. Indeed, adding the prototype

extern DIR *fdopendir(int);

right after the #include lines solves this problem. Is my understanding of the 
man page that the above #include lines should suffice incorrect? Is this
problem known---or even fixed already?

I have reports that indicate that this problem also seems to exist on 7.3-RELEASE-p4 amd64
and 8.1-RELEASE i386. The above program does not segfault on my 8.2-STABLE amd64.

Any hints on the status of this observation are very welcome.

Best regards,
Klaus


[1] http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/157274



More information about the freebsd-hackers mailing list