Package: manpages-dev
Version: 1.60-2

We've just been bitten by this at work.

If you read the LEASES section of fcntl(2), it explains that open() with
O_NONBLOCK could cause open to return EWOULDBLOCK.  This is not explained
anywhere on the open() page; open() has many possible return codes, none of
which are EWOULDBLOCK.  (There is a comment about opening fifos in
nonblocking mode, but the error code description implies that this would
return ENXIO, not EWOULDBLOCK.)

Also, the fcntl(2) page doesn't say whether opening a leased file with
O_NONBLOCK will actually request the lease to be broken or not.  It appears
you *have* to open in blocking mode in order to open a leased file at all,
but that's not clear from the description.

It wouldn't be so bad to open in blocking mode since a lease is guaranteed
to be broken after a certain timeout.  But a naive implementation would
introduce a security hole since the file might be replaced by surprise with
a FIFO, which has no open timeout at all.

Have fun,

Avery


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to