shallow: verify shallow file after taking lock
authorJeff King <peff@peff.net>
Sat, 15 Mar 2014 03:47:06 +0000 (23:47 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 17 Mar 2014 22:03:32 +0000 (15:03 -0700)
Before writing the shallow file, we stat() the existing file
to make sure it has not been updated since our operation
began. However, we do not do so under a lock, so there is a
possible race:

1. Process A takes the lock.

2. Process B calls check_shallow_file_for_update and finds
no update.

3. Process A commits the lockfile.

4. Process B takes the lock, then overwrite's process A's
changes.

We can fix this by doing our check while we hold the lock.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
No differences found