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>
Michael Haggerty committed
Oct 1, 2014 at 12:28 UTC
8a1c7533e2ee468a505656abab364780b15004fc
2 files changed
+5
-1
Documentation/technical/api-lockfile.txt
+2
-1
@@ -147,7 +147,8 @@ commit_lock_file::
147
`hold_lock_file_for_append`, close the file descriptor and
148
rename the lockfile to its final destination. Return 0 upon
149
success or a negative value on failure to `close(2)` or
150
- `rename(2)`.
150
+ `rename(2)`. It is a bug to call `commit_lock_file()` for a
151
+ `lock_file` object that is not currently locked.
152
153
rollback_lock_file::
154
lockfile.c
+3
@@ -301,6 +301,9 @@ int commit_lock_file(struct lock_file *lk)
301
{
302
char result_file[PATH_MAX];
303
304
+ if (!lk->filename[0])
305
+ die("BUG: attempt to commit unlocked object");
306
+
307
if (close_lock_file(lk))
308
return -1;
309