Commit 225cb8809ee5ec830fcfcca40efd62d1eba8241d

John Haley 2016-04-26T08:09:04

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/commit.c b/src/commit.c
index 5456751..79ddf2a 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;