Skip to content

Commit a7d841a

Browse files
authored
Merge pull request libgit2#6421 from julianmesa-gitkraken/fix-leak-git_tag_create_from_buffer
Fix leak in git_tag_create_from_buffer
2 parents ad2d3a0 + 25dd1c9 commit a7d841a

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/libgit2/tag.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,10 @@ static int git_tag_create__internal(
299299
}
300300

301301
if (create_tag_annotation) {
302-
if (write_tag_annotation(oid, repo, tag_name, target, tagger, message) < 0)
302+
if (write_tag_annotation(oid, repo, tag_name, target, tagger, message) < 0) {
303+
git_str_dispose(&ref_name);
303304
return -1;
305+
}
304306
} else
305307
git_oid_cpy(oid, git_object_id(target));
306308

@@ -397,14 +399,17 @@ int git_tag_create_from_buffer(git_oid *oid, git_repository *repo, const char *b
397399
/** Ensure the tag name doesn't conflict with an already existing
398400
* reference unless overwriting has explicitly been requested **/
399401
if (error == 0 && !allow_ref_overwrite) {
402+
git_str_dispose(&ref_name);
400403
git_error_set(GIT_ERROR_TAG, "tag already exists");
401404
return GIT_EEXISTS;
402405
}
403406

404407
/* write the buffer */
405408
if ((error = git_odb_open_wstream(
406-
&stream, odb, strlen(buffer), GIT_OBJECT_TAG)) < 0)
409+
&stream, odb, strlen(buffer), GIT_OBJECT_TAG)) < 0) {
410+
git_str_dispose(&ref_name);
407411
return error;
412+
}
408413

409414
if (!(error = git_odb_stream_write(stream, buffer, strlen(buffer))))
410415
error = git_odb_stream_finalize_write(oid, stream);

0 commit comments

Comments
 (0)