1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-28 12:59:41 +01:00

config: close config file handle in case of error

When updating an existing configuration file, we did not always
close the filehandle that is reading from the current configuration
file when we encountered an error (e.g. when unsetting a variable
that does not exist).

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Sup Yut Sum <ch3cooli@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Sven Strickroth 2015-08-14 22:21:17 +02:00 committed by Junio C Hamano
parent e88b8586bf
commit 54d160ec0d

View file

@ -1935,7 +1935,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
const char *key, const char *value, const char *key, const char *value,
const char *value_regex, int multi_replace) const char *value_regex, int multi_replace)
{ {
int fd = -1, in_fd; int fd = -1, in_fd = -1;
int ret; int ret;
struct lock_file *lock = NULL; struct lock_file *lock = NULL;
char *filename_buf = NULL; char *filename_buf = NULL;
@ -2065,6 +2065,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
goto out_free; goto out_free;
} }
close(in_fd); close(in_fd);
in_fd = -1;
if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) { if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
error("chmod on %s failed: %s", error("chmod on %s failed: %s",
@ -2148,6 +2149,8 @@ int git_config_set_multivar_in_file(const char *config_filename,
free(filename_buf); free(filename_buf);
if (contents) if (contents)
munmap(contents, contents_sz); munmap(contents, contents_sz);
if (in_fd >= 0)
close(in_fd);
return ret; return ret;
write_err_out: write_err_out: