diff options
| author | Carlos Martín Nieto <cmn@elego.de> | 2011-03-28 13:58:44 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@elego.de> | 2011-03-28 13:58:44 +0200 |
| commit | c15e0db5a9f259e782cf49e50dd1109548bab1fa (patch) | |
| tree | c3216718b8678518f6fee222e1ec49ecf14074c2 | |
| parent | f3cf7f6df1d2e2fcbd4f22dae318fbc4570833d8 (diff) | |
| download | libgit2-c15e0db5a9f259e782cf49e50dd1109548bab1fa.tar.gz | |
Fix memory leak in parse_tag_buffer
Free the allocated memory if the signature parsing reports an error.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
| -rw-r--r-- | src/tag.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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( |
