From 6caf65915db48ecd801930e54cd97c4e013a2663 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 30 Apr 2012 15:45:02 -0300 Subject: [PATCH] Fix double free in case of initializing a TreeBuilder with Tree object. --- pygit2.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pygit2.c b/pygit2.c index 07af7ec..c39878d 100644 --- a/pygit2.c +++ b/pygit2.c @@ -1000,6 +1000,7 @@ Repository_TreeBuilder(Repository *self, PyObject *args) PyObject *py_src = NULL; git_oid oid; git_tree *tree = NULL; + git_tree *must_free = NULL; int err; if (!PyArg_ParseTuple(args, "|O", &py_src)) @@ -1020,11 +1021,15 @@ Repository_TreeBuilder(Repository *self, PyObject *args) err = git_tree_lookup(&tree, self->repo, &oid); if (err < 0) return Error_set(err); + must_free = tree; } } err = git_treebuilder_create(&bld, tree); - git_tree_free(tree); + if (must_free != NULL) { + git_tree_free(must_free); + } + if (err < 0) return Error_set(err);