Skip to content
/ git Public
forked from git/git

Commit

Permalink
config: close config file handle in case of error
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sven Strickroth authored and gitster committed Aug 14, 2015
1 parent e88b858 commit 54d160e
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion config.c
Expand Up @@ -1935,7 +1935,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
const char *key, const char *value,
const char *value_regex, int multi_replace)
{
int fd = -1, in_fd;
int fd = -1, in_fd = -1;
int ret;
struct lock_file *lock = NULL;
char *filename_buf = NULL;
Expand Down Expand Up @@ -2065,6 +2065,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
goto out_free;
}
close(in_fd);
in_fd = -1;

if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
error("chmod on %s failed: %s",
Expand Down Expand Up @@ -2148,6 +2149,8 @@ int git_config_set_multivar_in_file(const char *config_filename,
free(filename_buf);
if (contents)
munmap(contents, contents_sz);
if (in_fd >= 0)
close(in_fd);
return ret;

write_err_out:
Expand Down

0 comments on commit 54d160e

Please sign in to comment.