Re: [bug] Segfault in git commit when a hook has a broken shebang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022-08-05 08:45:02+0300, Ilya K <me@xxxxxxxx> wrote:
> Hello! I ran into a weird bug just now that is probably easier to show than
> explain:
> ❯ git init
> Initialized empty Git repository in /home/k900/test/.git/
> ❯ echo '#!/usr/bin/oops' > .git/hooks/pre-commit
> ❯ chmod +x .git/hooks/pre-commit
> ❯ touch oops
> ❯ git add oops
> ❯ git commit -a
> fatal: cannot run .git/hooks/pre-commit: No such file or directory
> [1]    24580 segmentation fault (core dumped)  git commit -a
> This happens consistently with git 2.37.x, and I don't think it happened
> with git 2.36 or earlier.

This seems to be a side-effect of a082345372, (hook API: fix v2.36.0
regression: hooks should be connected to a TTY, 2022-06-07)

Since it makes hooks run in "ungroup" manner, hence run-command will
pass NULL as first argument to notify_start_failure.

This patch seems to fix the crash, however, I think we should remove
that clause entirely.

---- 8< -------

 hook.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hook.c b/hook.c
index d113ee7faa..dc54a2ac67 100644
--- a/hook.c
+++ b/hook.c
@@ -84,8 +84,8 @@ static int notify_start_failure(struct strbuf *out,
 
 	hook_cb->rc |= 1;
 
-	strbuf_addf(out, _("Couldn't start hook '%s'\n"),
-		    hook_path);
+	fprintf(stderr, _("Couldn't start hook '%s'\n"),
+		hook_path);
 
 	return 1;
 }
----- >8 --------------

-- 
Danh



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux