diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-04-06 11:39:11 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-04-06 11:39:11 -0700 |
commit | aad627e3c0e7dcf5a59da80cb424e8a4093b0324 (patch) | |
tree | 6de618e5e855a985e42e6020eff41c59123699e1 /builtin | |
parent | Merge branch 'ss/commit-squash-msg' (diff) | |
parent | merge: fix NULL pointer dereference when merging nothing into void (diff) | |
download | tgif-aad627e3c0e7dcf5a59da80cb424e8a4093b0324.tar.xz |
Merge branch 'jv/merge-nothing-into-void'
"git merge FETCH_HEAD" dereferenced NULL pointer when merging
nothing into an unborn history (which is arguably unusual usage,
which perhaps was the reason why nobody noticed it).
* jv/merge-nothing-into-void:
merge: fix NULL pointer dereference when merging nothing into void
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/merge.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/builtin/merge.c b/builtin/merge.c index c8154aaf6a..30b7bd54fa 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1258,12 +1258,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix) builtin_merge_options); if (!head_commit) { - struct commit *remote_head; /* * If the merged head is a valid one there is no reason * to forbid "git merge" into a branch yet to be born. * We do the same for "git pull". */ + unsigned char *remote_head_sha1; if (squash) die(_("Squash commit into empty head not supported yet")); if (fast_forward == FF_NO) @@ -1271,13 +1271,13 @@ int cmd_merge(int argc, const char **argv, const char *prefix) "an empty head")); remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv, NULL); - remote_head = remoteheads->item; - if (!remote_head) + if (!remoteheads) die(_("%s - not something we can merge"), argv[0]); if (remoteheads->next) die(_("Can merge only exactly one commit into empty head")); - read_empty(remote_head->object.oid.hash, 0); - update_ref("initial pull", "HEAD", remote_head->object.oid.hash, + remote_head_sha1 = remoteheads->item->object.oid.hash; + read_empty(remote_head_sha1, 0); + update_ref("initial pull", "HEAD", remote_head_sha1, NULL, 0, UPDATE_REFS_DIE_ON_ERR); goto done; } |