diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2022-11-18 13:56:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-18 13:56:59 +0000 |
commit | a7d841a8b1c5c7a492b18c32471dcda2cd479c85 (patch) | |
tree | 845b33aa08c0139a6b59aea1e20cb442528026e0 | |
parent | ad2d3a06963ebfd13a04deb619e839b1346a4353 (diff) | |
parent | 25dd1c93aba78e4cb2827f729ed0d1c5c527ecf7 (diff) | |
download | libgit2-a7d841a8b1c5c7a492b18c32471dcda2cd479c85.tar.gz |
Merge pull request #6421 from julianmesa-gitkraken/fix-leak-git_tag_create_from_buffer
Fix leak in git_tag_create_from_buffer
-rw-r--r-- | src/libgit2/tag.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libgit2/tag.c b/src/libgit2/tag.c index 908adbebf..0a90e393c 100644 --- a/src/libgit2/tag.c +++ b/src/libgit2/tag.c @@ -299,8 +299,10 @@ static int git_tag_create__internal( } if (create_tag_annotation) { - if (write_tag_annotation(oid, repo, tag_name, target, tagger, message) < 0) + if (write_tag_annotation(oid, repo, tag_name, target, tagger, message) < 0) { + git_str_dispose(&ref_name); return -1; + } } else git_oid_cpy(oid, git_object_id(target)); @@ -397,14 +399,17 @@ int git_tag_create_from_buffer(git_oid *oid, git_repository *repo, const char *b /** Ensure the tag name doesn't conflict with an already existing * reference unless overwriting has explicitly been requested **/ if (error == 0 && !allow_ref_overwrite) { + git_str_dispose(&ref_name); git_error_set(GIT_ERROR_TAG, "tag already exists"); return GIT_EEXISTS; } /* write the buffer */ if ((error = git_odb_open_wstream( - &stream, odb, strlen(buffer), GIT_OBJECT_TAG)) < 0) + &stream, odb, strlen(buffer), GIT_OBJECT_TAG)) < 0) { + git_str_dispose(&ref_name); return error; + } if (!(error = git_odb_stream_write(stream, buffer, strlen(buffer)))) error = git_odb_stream_finalize_write(oid, stream); |