This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Thread-, Signal- and Cancellation-safety documentation


On Sun, 2013-06-02 at 00:49 -0300, Alexandre Oliva wrote:
> On May 31, 2013, Rich Felker <dalias@aerifal.cx> wrote:
> 
> > On Fri, May 31, 2013 at 05:51:15PM -0300, Alexandre Oliva wrote:
> 
> >> Huh?  How could anyone ensure it has exclusive access to a filename
> >> that's about to be renamed, or overwritten by a rename?
> 
> > If the directory has a 255-character random name and is located in a
> > non-readable directory owned by root on a system where no process has
> > retained root, then you can be quite certain that only the process(es)
> > which have the name of the directory or a live file descriptor for it
> > can perform a rename in it.
> 
> Yeah, I know, but you forgot the âno suid root executableâ and âno
> root-me exploitsâ constraints ;-)
> 
> > Extreme examples aside, if an application is working in a working
> > directory that (by contract/convention) belongs to it, and which has
> > the right permissions so that other users cannot mess with it, and the
> > application has documented that the user running the application
> > cannot mess with the contents of this directory while the application
> > is running without invoking UB, then you have a reasonable real-world
> > situation where exclusivity is "guaranteed".
> 
> I'd argue the same goes for chdir.  Just like the âdon't mess with my
> exclusive dirâ technique you wrote about above, nothing prevents other
> threads in the same process from messing with it.  It's a matter of
> setting a convention and abiding by it.

Agreed.  We need both a precise definition of the actual guarantees, and
additional rules or conventions that make sense for certain use cases or
programmers with certain skills.  But we need the former to also reason
about and explain the latter.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]