Full Disclosure mailing list archives

Re: readdir_r considered harmful


From: Casper.Dik () Sun COM
Date: Sat, 05 Nov 2005 19:45:20 +0100


The Austin Group should amend POSIX and the SUS in one or more of the
following ways:

1.  Standardise the dirfd function from BSD and recommend its use in
   determining the buffer size for readdir_r.
2.  Specify a new variant of readdir in which the buffer size is explicit
   and the function returns an error code if the buffer is too small.
3.  Specify that NAME_MAX must be defined as the length of the longest
   name that can be used on any filesystem.  (This seems to be what many
   or most implementations attempt to do at present, although POSIX
   currently specifies otherwise.)


Why not:

4. Require the readdir() implementation to use state local to dirp.

I've never understood the rationale behind readdir_r; it's like someone
went through the manual looking for "pointers to static locations"
and defined new functions with _r for each of them, suspending thinking.

But perhaps people can look at how their readdir() implementations
behave.  The Solaris implementation appears to be "unshared dirp safe".

Casper
_______________________________________________
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/


Current thread: