> On 06 Oct 2017, at 06:56, Jeff King <peff@xxxxxxxx> wrote: > > On Fri, Oct 06, 2017 at 01:26:48PM +0900, Junio C Hamano wrote: > > ... >> -- >8 -- >> From: Lars Schneider <larsxschneider@xxxxxxxxx> >> Date: Thu, 5 Oct 2017 12:44:07 +0200 >> Subject: [PATCH] entry.c: check if file exists after checkout >> >> If we are checking out a file and somebody else racily deletes our file, >> then we would write garbage to the cache entry. Fix that by checking >> the result of the lstat() call on that file. Print an error to the user >> if the file does not exist. > > I don't know if we wanted to capture any of the reasoning behind using > error() here or not. Frankly, I'm not sure how to argue for it > succinctly. :) I'm happy with letting it live on in the list archive. > >> diff --git a/entry.c b/entry.c >> index f879758c73..6d9de3a5aa 100644 >> --- a/entry.c >> +++ b/entry.c >> @@ -341,7 +341,9 @@ static int write_entry(struct cache_entry *ce, >> if (state->refresh_cache) { >> assert(state->istate); >> if (!fstat_done) >> - lstat(ce->name, &st); >> + if (lstat(ce->name, &st) < 0) >> + return error_errno("unable stat just-written file %s", >> + ce->name); > > s/unable stat/unable to stat/, I think. > > Other than that, this looks fine to me. > > -Peff Looks fine to me, too. Thanks, Lars