Re: [PATCH] push: fix segfault when HEAD points nowhere

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

 



Fraser Tweedale <frase@xxxxxxxxxxx> writes:

> When reporting the outcome of a push, a segfault occurs if HEAD does
> not point somewhere.  Check that HEAD points somewhere before trying
> to strcmp it.
>
> Signed-off-by: Fraser Tweedale <frase@xxxxxxxxxxx>
> ---
>  transport.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/transport.c b/transport.c
> index 9932f40..b9306ef 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -741,7 +741,7 @@ void transport_print_push_status(const char *dest, struct ref *refs,
>  			n += print_one_push_status(ref, dest, n, porcelain);
>  		if (ref->status == REF_STATUS_REJECT_NONFASTFORWARD &&
>  		    *nonfastforward != NON_FF_HEAD) {
> -			if (!strcmp(head, ref->name))
> +			if (head != NULL && !strcmp(head, ref->name))
>  				*nonfastforward = NON_FF_HEAD;
>  			else
>  				*nonfastforward = NON_FF_OTHER;

Wow.

This is a bug that is hard to trigger by just using the software
(you have to be doubly insane to be on an unborn branch and pushing
out a branch that is not the one you are currently on) and one has
to look at the code to hunt for it.

The fix looks correct.  Thank you very much for spotting.

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