Re: [PATCH 2/2] config.c: handle lock file in error case in git_config_rename_...
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 20, 2016, 20:09 UTC
- Message-ID
- <xmqqfulijrah.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20161220094836.4131-2-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
Show 6 quoted lines
> We could rely on atexit() to clean up everything, but let's be > explicit when we can. And it's good anyway because the function is > called the second time in the same process, we're in trouble. > > This function should not affect the successful case because after > commit_lock_file() is called, rollback_lock_file() becomes no-op.
Not really. At the point of the first "goto out" in this function, lock is merely an uninitialized pointer.
> > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> > ---
Show 15 quoted lines
> config.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/config.c b/config.c
> index 505e0d0..e02def4 100644
> --- a/config.c
> +++ b/config.c
> @@ -2483,6 +2483,7 @@ int git_config_rename_section_in_file(const char *config_filename,
> ret = error_errno("could not write config file %s",
> config_filename);
> out:
> + rollback_lock_file(lock);
> free(filename_buf);
> return ret;
> }