summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-04-15 01:57:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-04-15 01:57:49 (GMT)
commita5953f68186e72b3fe7b7dc0b2a7cb0f451cf3ef (patch)
treeabad8ddc1b590700b28d29973cd05fb2fd9d4894 /builtin
parentea7fefbd7b25deb7c0b4da56d95d67116edded48 (diff)
parentb84e65d40929ec1146f54dcf4c9dbf8dc58467d0 (diff)
downloadgit-a5953f68186e72b3fe7b7dc0b2a7cb0f451cf3ef.zip
git-a5953f68186e72b3fe7b7dc0b2a7cb0f451cf3ef.tar.gz
git-a5953f68186e72b3fe7b7dc0b2a7cb0f451cf3ef.tar.bz2
Merge branch 'jv/merge-nothing-into-void' into maint
"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.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/builtin/merge.c b/builtin/merge.c
index 101ffef..bf2f261 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1257,12 +1257,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)
@@ -1270,13 +1270,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;
}