Subject: [PATCH] Correctly close config file handle in case of error

From: Sven Strickroth <[email-masked]>
Date: Fri, 14 Aug 2015 21:44:17 +0200

Without this patch there might be open file handle leaks.

Signed-off-by: Sven Strickroth <[email-masked]>
Signed-off-by: Sup Yut Sum <[email-masked]>
---
 config.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/config.c b/config.c
index 9fd275f..c06dc2f 100644
--- a/config.c
+++ b/config.c
@@ -2010,6 +2010,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
 				error("invalid pattern: %s", value_regex);
 				free(store.value_regex);
 				ret = CONFIG_INVALID_PATTERN;
+				close(in_fd);
 				goto out_free;
 			}
 		}
@@ -2034,6 +2035,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
 				free(store.value_regex);
 			}
 			ret = CONFIG_INVALID_FILE;
+			close(in_fd);
 			goto out_free;
 		}
 
@@ -2048,6 +2050,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
 		if ((store.seen == 0 && value == NULL) ||
 				(store.seen > 1 && multi_replace == 0)) {
 			ret = CONFIG_NOTHING_SET;
+			close(in_fd);
 			goto out_free;
 		}
 
@@ -2062,6 +2065,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
 			      config_filename, strerror(errno));
 			ret = CONFIG_INVALID_FILE;
 			contents = NULL;
+			close(in_fd);
 			goto out_free;
 		}
 		close(in_fd);
-- 
Best regards,
 Sven Strickroth
 PGP key id F5A9D4C4 @ any key-server