"git fmt-merge-msg" SIGSEGV

Previous thread: [PATCH] Make "git checkout <branch> <path>" work when <path> is a directory. by Michael K. Edwards on Friday, November 17, 2006 - 1:49 am. (3 messages)

Next thread: Re: [PATCH] Make "git checkout <branch> <path>" work when <path> is a directory. by Junio C Hamano on Friday, November 17, 2006 - 4:15 am. (1 message)
To: Junio C Hamano <junkio@...>, Git Mailing List <git@...>
Date: Friday, November 17, 2006 - 2:57 am

Ok, this is a _really_ stupid case, and I don't think it matters, but hey,
we should never SIGSEGV.

Steps to reproduce:

mkdir duh
cd duh
git init-db
git-fmt-merge-msg < /dev/null

will cause a SIGSEGV in cmd_fmt_merge_msg(), because we're doing a
strncmp() with a NULL current_branch.

And yeah, it's an insane schenario, and no, it doesn't really matter. The
only reason I noticed was that a broken version of my "git pull" into an
empty directory would cause this.

This silly patch just replaces the SIGSEGV with a controlled exit with an
error message.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
diff --git a/builtin-fmt-merge-msg.c b/builtin-fmt-merge-msg.c
index 3d3097d..87d3d63 100644
--- a/builtin-fmt-merge-msg.c
+++ b/builtin-fmt-merge-msg.c
@@ -278,6 +278,8 @@ int cmd_fmt_merge_msg(int argc, const ch

/* get current branch */
current_branch = resolve_ref("HEAD", head_sha1, 1, NULL);
+ if (!current_branch)
+ die("No current branch");
if (!strncmp(current_branch, "refs/heads/", 11))
current_branch += 11;

-

Previous thread: [PATCH] Make "git checkout <branch> <path>" work when <path> is a directory. by Michael K. Edwards on Friday, November 17, 2006 - 1:49 am. (3 messages)

Next thread: Re: [PATCH] Make "git checkout <branch> <path>" work when <path> is a directory. by Junio C Hamano on Friday, November 17, 2006 - 4:15 am. (1 message)