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

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

 



On Thu, Feb 21, 2013 at 7:27 PM, Per Cederqvist <cederp@xxxxxxxxx> 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.

>
> 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@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Duy
--
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


[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]