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

Re: "git branch HEAD" dumps core when on detached head (NULL pointer dereference)

From
Duy Nguyen <pclouds@gmail.com>
Date
Feb 21, 2013, 12:50 UTC
Message-ID
<CACsJy8CuRvwsbXbcKr7dHneEDF7UmoG4ioCxfDi_7qWDD-4wgQ@mail.gmail.com>
In-Reply-To
<512612AD.4000609@opera.com>
On Thu, Feb 21, 2013 at 7:27 PM, Per Cederqvist <cederp@opera.com> wrote:
> Running "git branch HEAD" may be a stupid thing to do. It actually
> was a mistake on my part. Still, I don't think git should dereference
> a NULL pointer.

We should not. Can you make a patch to fix it (with test cases)? You may want to fix the two preceding blocks, "if (new_upstream)" and "if (unset_upstream)", as well. They don't check for NULL branch either. I think we can say something like "detached HEAD is not valid for this operation" before exit.

Show 56 quoted lines
>
> Tested using git 1.8.1.4 adn 1.8.1.1.
>
> Repeat by:
>
>     mkdir branchcrash || exit 1
>     cd branchcrash
>     git init
>     touch a; git add a; git commit -m"Added a".
>     touch b; git add b; git commit -m"Added b".
>     git checkout HEAD^
>     git branch HEAD
>
> The last command dumps core.  gdb session:
>
> gdb /usr/local/bin/git core
> GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
> Copyright (C) 2012 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu".
> For bug reporting instructions, please see:
> <http://bugs.launchpad.net/gdb-linaro/>...
> Reading symbols from /usr/local/bin/git...done.
> [New LWP 7174]
>
> warning: Can't read pathname for load map: Input/output error.
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> Core was generated by `git branch HEAD'.
> Program terminated with signal 11, Segmentation fault.
> #0  cmd_branch (argc=1, argv=0x7fffe6e2a0f0, prefix=<optimized out>)
>     at builtin/branch.c:919
> 919                     strbuf_addf(&buf, "refs/remotes/%s", branch->name);
> (gdb) bt
> #0  cmd_branch (argc=1, argv=0x7fffe6e2a0f0, prefix=<optimized out>)
>     at builtin/branch.c:919
> #1  0x00000000004046ac in run_builtin (argv=0x7fffe6e2a0f0, argc=2,
>     p=<optimized out>) at git.c:273
> #2  handle_internal_command (argc=2, argv=0x7fffe6e2a0f0) at git.c:434
> #3  0x0000000000404df3 in run_argv (argv=0x7fffe6e29f90,
> argcp=0x7fffe6e29f9c)
>     at git.c:480
> #4  main (argc=2, argv=0x7fffe6e2a0f0) at git.c:555
> (gdb) p branch
> $1 = (struct branch *) 0x0
> (gdb) quit
>
>     /ceder
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Duy
Previous: Per CederqvistNext: Per Cederqvist
Message 2 of 10 in “"git branch HEAD" dumps core when on detached head (NULL pointer dereference)”
  1. Per CederqvistFeb 21, 2013
  2. Duy NguyenFeb 21, 2013
  3. Per CederqvistFeb 21, 2013
  4. Duy NguyenFeb 21, 2013
  5. branch: segfault fixes and validationNguyễn Thái Ngọc Duy, Feb 21, 2013
  6. Junio C HamanoFeb 21, 2013
  7. branch: segfault fixes and validationNguyễn Thái Ngọc Duy, Feb 22, 2013
  8. Junio C HamanoFeb 22, 2013
  9. branch: segfault fixes and validationNguyễn Thái Ngọc Duy, Feb 23, 2013
  10. Junio C HamanoFeb 23, 2013

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.