diff options
author | John Haley <johnh@axosoft.com> | 2016-04-26 08:09:04 -0700 |
---|---|---|
committer | John Haley <johnh@axosoft.com> | 2016-05-03 13:32:32 -0700 |
commit | 225cb8809ee5ec830fcfcca40efd62d1eba8241d (patch) | |
tree | 5cff9f639ce0f28d4b8271afd08b4f40daa78df7 | |
parent | 4d384d6bbe3efc72fb212a2c5c71c8064a2cee54 (diff) | |
download | libgit2-225cb8809ee5ec830fcfcca40efd62d1eba8241d.tar.gz |
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.
-rw-r--r-- | src/commit.c | 2 |
1 files changed, 1 insertions, 1 deletions
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; |