From 225cb8809ee5ec830fcfcca40efd62d1eba8241d Mon Sep 17 00:00:00 2001 From: John Haley Date: Tue, 26 Apr 2016 08:09:04 -0700 Subject: [PATCH] Fix `git_commit_create` for an initial commit When calling `git_commit_create` with an empty array of `parents` and `parent_count == 0` the call will segfault at https://github.com/libgit2/libgit2/blob/master/src/commit.c#L107 when it's trying to compare `current_id` to a null parent oid. This just puts in a check to stop that segfault. --- src/commit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commit.c b/src/commit.c index 5456751fe..79ddf2a63 100644 --- a/src/commit.c +++ b/src/commit.c @@ -104,7 +104,7 @@ static int validate_tree_and_parents(git_array_oid_t *parents, git_repository *r i++; } - if (current_id && git_oid_cmp(current_id, git_array_get(*parents, 0))) { + if (current_id && (parents->size == 0 || git_oid_cmp(current_id, git_array_get(*parents, 0)))) { giterr_set(GITERR_OBJECT, "failed to create commit: current tip is not the first parent"); error = GIT_EMODIFIED; goto on_error;