From 9f7f4122cfa49f8932fd65f9751d96125c8155bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Tue, 29 Mar 2011 12:19:53 +0200 Subject: [PATCH] Don't leak if config parsing fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Carlos Martín Nieto --- src/config.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index 852bcd3b1..22ba5f56d 100644 --- a/src/config.c +++ b/src/config.c @@ -74,15 +74,20 @@ int git_config_open(git_config **cfg_out, const char *path) goto cleanup; } - *cfg_out = cfg; - error = gitfo_read_file(&cfg->reader.buffer, cfg->file_path); if(error < GIT_SUCCESS) goto cleanup; /* Initialise the reading position */ cfg->reader.read_ptr = cfg->reader.buffer.data; - return config_parse(cfg); + + error = config_parse(cfg); + if(error < GIT_SUCCESS) + git_config_free(cfg); + else + *cfg_out = cfg; + + return error; cleanup: if(cfg->vars)