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: [PATCH 1/2] Move offset to end of file when fdopen is in "a" mode (#16532)


On Tue, Feb 11, 2014 at 04:54:55AM -0500, Rich Felker wrote:
> Are you sure this fixes the issue? I think there are still cases where
> the wrong offset might be seen. For instance it's legal to call lseek
> on the fd after calling fdopen (the FILE is not the "active handle"
> until you read/write with it) and then ftell could still report the
> wrong result.

It shouldn't make a difference.  The only reason to seek to the end is
to record the offset of the file end into the FILE object.  If an
lseek moves it elsewhere, we don't care.  Data will be appended to the
end of the file in any case since we add an O_APPEND to the fd.

> We had a similar bug in musl (but not the same; it manifested in more
> cases than the glibc one) and I fixed it by doing the repositioning at
> ftello time when the stream is append-mode and there's unwritten
> buffered data:
> 
> http://git.musl-libc.org/cgit/musl/commit/?id=3af2edee150484940916eba1984f78c3b965dd05

This is precisely what my earlier ftell optimization avoided whenever
it could.  It is still avoidable for append, but not for append-update
(a+) at least in the initial case.

Siddhesh


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