On 11.10.2012 22:36, Tom Lane wrote:
Heikki Linnakangas<hlinnakan...@vmware.com>  writes:
Hmm, starting with 9.3, postmaster can not only create and append to the
end of file, it can also inject a line in the middle, shifting the
following lines forwards. In theory, if a new line is injected into the
middle of the file between fgets() calls, readfile() could read part of
the same line twice. Not sure what consequences that could have; pg_ctl
might try to connect to wrong address or socket directory.

Hm.  IIRC, the postmaster is careful to write the whole thing in a
single write() call, which in principle is atomic.  Perhaps you're
right that we'd better have pg_ctl read it in a single read() to
ensure that it sees a consistent file state.  Otherwise we're making
assumptions about what sort of buffering underlies the stdio functions.

Ok, changed it to slurp the whole file to memory with one read() call.

Dave, did this silence the static analysis tool you used?

- Heikki


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to