From c15e0db5a9f259e782cf49e50dd1109548bab1fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 28 Mar 2011 13:58:44 +0200 Subject: [PATCH] Fix memory leak in parse_tag_buffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Free the allocated memory if the signature parsing reports an error. Signed-off-by: Carlos Martín Nieto --- src/tag.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/tag.c b/src/tag.c index 7baababbf..d90e2de82 100644 --- a/src/tag.c +++ b/src/tag.c @@ -142,7 +142,7 @@ static int parse_tag_buffer(git_tag *tag, char *buffer, const char *buffer_end) tag->tagger = git__malloc(sizeof(git_signature)); if ((error = git_signature__parse(tag->tagger, &buffer, buffer_end, "tagger ")) != 0) - return error; + goto cleanup; text_len = buffer_end - ++buffer; @@ -151,6 +151,14 @@ static int parse_tag_buffer(git_tag *tag, char *buffer, const char *buffer_end) tag->message[text_len] = '\0'; return GIT_SUCCESS; + + cleanup: + if(tag->tag_name) + free(tag->tag_name); + if(tag->tagger) + git_signature_free(tag->tagger); + + return error; } int git_tag_create_o(