git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: bugreport - SEGFAULT on 'git show-branch --current --reflog=3'

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 13, 2022, 13:57 UTC
Message-ID
<220413.864k2xgk51.gmgdl@evledraar.gmail.com>
In-Reply-To
<b6113b91-6613-42b5-ca85-1004099b65c4@p1sec.com>
On Wed, Apr 13 2022, Gregory David wrote:
Show 41 quoted lines
> [[PGP Signed Part:Undecided]]
> Hi, this bugreport is about a SEGFAULT on git binary when running in
> this repository (for example, as it also segfault on other private
> repositories): https://framagit.org/groolot-association/osc_looper.git
>
>
> What did you do before the bug happened? (Steps to reproduce your
> issue) I just wanted to list branches, and so playing with 'git
> show-branch --current --reflog=3' in the repository
> https://framagit.org/groolot-association/osc_looper.git
>
> What did you expect to happen? (Expected behavior)
> Not to segfault
>
> What happened instead? (Actual behavior)
> This command fails with a SEGFAULT on version 2.35.1, 2.20.1 and 2.17.1
> It also SEGFAULT on branch 'next' of github git repository.
>
> What's different between what you expected and what actually happened?
> Segfault
>
> Anything else you want to add:
> Segfaut happened when '--current' AND '--reflog=3' are provided together
>
> Please review the rest of the bug report below.
> You can delete any lines you don't wish to share.
>
>
> [System Info]
> git version:
> git version 2.35.1
> cpu: x86_64
> no commit associated with this build
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> uname: Linux 5.16.0-4-amd64 #1 SMP PREEMPT Debian 5.16.12-1 (2022-03-08)
> x86_64
> compiler info: gnuc: 11.2
> libc info: glibc: 2.33
> $SHELL (typically, interactive shell): /usr/bin/zsh

This appears to fix it, but I didn't have time to further validate it, come up with a test etc:

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 330b0553b9d..be3890b2dd6 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -881,10 +881,9 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 				       get_color_reset_code(), ref_name[i]);
 			}
 
-			if (!reflog) {
+			if (!reflog || !reflog_msg[i])
 				/* header lines never need name */
 				show_one_commit(rev[i], 1);
-			}
 			else
 				puts(reflog_msg[i]);
 
Previous: Gregory DavidNext: Gregory David
Message 2 of 6 in “bugreport - SEGFAULT on 'git show-branch --current --reflog=3'”
  1. Gregory DavidApr 13, 2022
  2. Ævar Arnfjörð BjarmasonApr 13, 2022
  3. Gregory DavidApr 13, 2022
  4. Ævar Arnfjörð BjarmasonApr 13, 2022
  5. Gregory DavidApr 14, 2022
  6. Gregory DavidApr 14, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.