From: "Jose Ivan B. Vilarouca Filho" <joseivan@xxxxxxxxxxxxx> Hello, Eric. Thanks for suggestions. I've added a test in commit replacing git fetch origin by a fake FETCH_HEAD content. merge: don't dereference NULL pointer A segmentaion fault is raised when trying to merge FETCH_HEAD formed only by "not-for-merge" refs. Ex: git init . git remote add origin ... git fetch origin git merge FETCH_HEAD Signed-off-by: Jose Ivan B. Vilarouca Filho <joseivan@xxxxxxxxxxxxx> --- builtin/merge.c | 4 ++-- test-merge-fetchhead.sh | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100755 test-merge-fetchhead.sh diff --git a/builtin/merge.c b/builtin/merge.c index 101ffef..098aa8a 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1270,9 +1270,9 @@ 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 || !remoteheads->item) die(_("%s - not something we can merge"), argv[0]); + remote_head = remoteheads->item; if (remoteheads->next) die(_("Can merge only exactly one commit into empty head")); read_empty(remote_head->object.oid.hash, 0); diff --git a/test-merge-fetchhead.sh b/test-merge-fetchhead.sh new file mode 100755 index 0000000..383415a --- /dev/null +++ b/test-merge-fetchhead.sh @@ -0,0 +1,23 @@ +#!/bin/bash +GIT=$(pwd)/git +REPO_DIR=./test-fetch-head-repo + +if [ ! -x "${GIT}" ]; then + echo "Missing git binary" + exit 1 +fi + +${GIT} init ${REPO_DIR} || rm -rf ${REPO_DIR} || exit 1 +pushd ${REPO_DIR} || rm -rf ${REPO_DIR} || exit 1 +#Let's fake a FETCH_HEAD only formed by not-for-merge (git fetch origin) +echo -ne "f954fc9919c9ec33179e11aa1af562384677e174\tnot-for-merge\tbranch 'master' of https://github.com/git/git.git" > .git/FETCH_HEAD +${GIT} merge FETCH_HEAD +GRET=$? +popd +if [ ${GRET} -eq 139 ]; then + rm -rf ${REPO_DIR} + exit 1 +fi + +rm -rf ${REPO_DIR} +exit 0 -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html