On Mon, Jan 07 2019 15:48:25 -0500, Ted Unangst wrote:
> Lauri Tirkkonen wrote:
> > Hi, it seems install(1) has a race condition: in create_newfile, it
> > first unlinks the target file and then tries to open it with
> > O_CREAT|O_EXCL.
> 
> > The below diff essentially removes the -S option and makes install
> > always use temp files (ie. -S is always on), eliminating the race since
> > rename(2) cannot fail like this.
> 
> I don't know. Presumably if there weren't any downside to safecopy, it would
> already have been made the default.

I had this thought, but could not think of any real downsides...

> This doubles the number of synchronous
> file operations.

Does it? Without safecopy, the operations performed are:

    unlink(targetfile);
    open(targetfile, O_CREAT|O_EXCL);
    write();
    fchmod();
    close();

with safecopy, they are:

    open(tempfile, O_CREAT|O_EXCL);
    write();
    fchmod();
    close();
    rename(tempfile, targetfile);

which to me seems identical in the number of file syscalls made.

-- 
Lauri Tirkkonen | lotheac @ IRCnet

Reply via email to