git_config_rename_section_in_file(): avoid resource leak

In case of errors, we really want the file descriptor to be closed.

Discovered by a Coverity scan.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2017-05-04 15:55:41 +02:00 committed by Junio C Hamano
parent 5748693b91
commit 4db7dbdb4a

View File

@ -2621,7 +2621,7 @@ int git_config_rename_section_in_file(const char *config_filename,
struct lock_file *lock; struct lock_file *lock;
int out_fd; int out_fd;
char buf[1024]; char buf[1024];
FILE *config_file; FILE *config_file = NULL;
struct stat st; struct stat st;
if (new_name && !section_name_is_ok(new_name)) { if (new_name && !section_name_is_ok(new_name)) {
@ -2703,11 +2703,14 @@ int git_config_rename_section_in_file(const char *config_filename,
} }
} }
fclose(config_file); fclose(config_file);
config_file = NULL;
commit_and_out: commit_and_out:
if (commit_lock_file(lock) < 0) if (commit_lock_file(lock) < 0)
ret = error_errno("could not write config file %s", ret = error_errno("could not write config file %s",
config_filename); config_filename);
out: out:
if (config_file)
fclose(config_file);
rollback_lock_file(lock); rollback_lock_file(lock);
out_no_rollback: out_no_rollback:
free(filename_buf); free(filename_buf);