[Patch]: Create Global Privilege

Corinna Vinschen cygwin-patches@cygwin.com
Fri Dec 5 13:54:00 GMT 2003


On Dec  5 08:02, Pierre A. Humblet wrote:
> At 12:14 PM 12/5/2003 +0100, Corinna Vinschen wrote:
> >Two questions:
> >
> >What is the advantage of using lseek(SEEK_END) and using that value
> >for fcntl(F_SETLK, SEEK_SET) over just using fcntl(F_SETLK, SEEK_END)?
> >Especially since lseek(SEEK_END) is then called afterwards anyway.
> 
> fcntl(F_SETLK, SEEK_END) is extremely risky on Windows because you
> don't know what region was actually locked, and an unlock must 
> correspond *exactly* to a previous lock.
> Somebody else could write to the file between the time fcntl finds
> how long it is and the moment it locks it. The unlock you make after
> you write will then fail.

Ok.

> >What is the advantage of using a finite loop with fcntl(F_SETLK) over
> >using fcntl(F_SETLKW) just once?  This seems potentially less secure
> >than F_SETLKW and also less secure than the former Mutex solution.
> 
> The only reason is that F_SETLKW doesn't work on 9X so you need
> a loop there anyway. But thinking more about it, we should have both
> F_SETLKW and a loop. On NT the loop will never kick in. On 9x F_SETLKW 
> works like F_SETLK and the loop is useful. The loop could also be made
> much longer.

I agree.  Are you going to change your patch accordingly?

Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.



More information about the Cygwin-patches mailing list