Skip to content
  • Jeff King's avatar
    shallow: verify shallow file after taking lock · 78396321
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    78396321