BugTraq
readdir_r considered harmful Nov 01 2005 03:57AM
Ben Hutchings (ben decadentplace org uk) (2 replies)
Re: readdir_r considered harmful Nov 05 2005 06:45PM
Casper Dik Sun COM (1 replies)
Re: [Full-disclosure] Re: readdir_r considered harmful Nov 06 2005 01:53AM
Ulrich Drepper (drepper gmail com) (1 replies)
Re: [Full-disclosure] Re: readdir_r considered harmful Nov 06 2005 09:00AM
Casper Dik Sun COM (1 replies)
Re: [Full-disclosure] Re: readdir_r considered harmful Nov 06 2005 03:34PM
Ulrich Drepper (drepper gmail com) (1 replies)
Re: [Full-disclosure] Re: readdir_r considered harmful Nov 06 2005 07:19PM
Casper Dik Sun COM (1 replies)


>On 11/6/05, Casper.Dik (at) sun (dot) com [email concealed] <Casper.Dik (at) sun (dot) com [email concealed]> wrote:
>> I don't see how that is relevant; the typical use of readdir() is as follows:
>>
>> DIR *dirp = opendir(name);
>>
>> while ((dent = readdir(dirp)) != NULL) {
>> ...
>> }
>>
>> closedir(dirp);
>>
>> Nothing other threads do with readdir() on different dirp's will influence
>> what "dent" points to.
>
>The issue is multiple threads using the same DIR.

No, it isn't. I certainly limited the scope of my contribution to
single threads reading from a DIR.

All the 80-odd uses of readdir_r() in the Solaris core source code,
all can (and should) be replaced with readdir(). All have a single
thread reading and reusing the same "struct dirent", so readdir()
could be used in POSIXly correct fashion if the following sentence
in the open group's manual page was not present:

"The readdir() function need not be reentrant. A function that is not
required to be reentrant is not required to be thread-safe."

I believe that this is an error in POSIX; when "threadedness" was added
the manual page could have been changed to indicate that a single
thread using the above idiom was safe.

Had they done so, we would never have had to use readdir_r() and progammers
would not have introduced bugs in the (mis)use of pathconf, over allocating,
etc.

I would be interested in seeing any real-world use of readdir_r() in
a context where readdir_r() is required (multiple threads reading from
a single DIR *).

Casper

[ reply ]
Re: [Full-disclosure] Re: readdir_r considered harmful Nov 08 2005 01:47AM
Andrew Miller (andrew amxl com)
Re: readdir_r considered harmful Nov 01 2005 08:16PM
Ben Hutchings (ben decadentplace org uk)


 

Privacy Statement
Copyright 2010, SecurityFocus