commit_lock_file(): die() if called for unlocked lockfile object

It was previously a bug to call commit_lock_file() with a lock_file
object that was not active (an illegal access would happen within the
function).  It was presumably never done, but this would be an easy
programming error to overlook.  So before continuing, do a consistency
check that the lock_file object really is locked.

Helped-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2014-10-01 12:28:21 +02:00 committed by Junio C Hamano
parent 4f4713df94
commit 8a1c7533e2
2 changed files with 5 additions and 1 deletions

View File

@ -147,7 +147,8 @@ commit_lock_file::
`hold_lock_file_for_append`, close the file descriptor and
rename the lockfile to its final destination. Return 0 upon
success or a negative value on failure to `close(2)` or
`rename(2)`.
`rename(2)`. It is a bug to call `commit_lock_file()` for a
`lock_file` object that is not currently locked.
rollback_lock_file::

View File

@ -301,6 +301,9 @@ int commit_lock_file(struct lock_file *lk)
{
char result_file[PATH_MAX];
if (!lk->filename[0])
die("BUG: attempt to commit unlocked object");
if (close_lock_file(lk))
return -1;