[PATCH] ui-shared: fix segfault when defbranch is NULL

John Keeping john at keeping.me.uk
Wed Jul 6 10:44:27 CEST 2016


On Wed, Jul 06, 2016 at 07:08:01AM +0000, Eric Wong wrote:
> Not sure if there's a better fix for this.  defbranch is
> NULL here on my setup when a crawler hit an invalid URL,
> causing strcmp to segfault.
> 
> Signed-off-by: Eric Wong <normalperson at yhbt.net>
> ---
>  ui-shared.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/ui-shared.c b/ui-shared.c
> index b1a6c46..e39d004 100644
> --- a/ui-shared.c
> +++ b/ui-shared.c
> @@ -253,7 +253,7 @@ static char *repolink(const char *title, const char *class, const char *page,
>  		}
>  		delim = "&";
>  	}
> -	if (head && strcmp(head, ctx.repo->defbranch)) {
> +	if (head && ctx.repo->defbranch && strcmp(head, ctx.repo->defbranch)) {

This looks sensible to me.  We guarantee that defbranch is non-null in
prepare_repo_cmd() but this function can be called from the repository
list via (at least) cgit_summary_link(), so it may be null here.

All of the other use sites are already protected by null checks except
the one reached via find_default_branch() but that is called immediately
after we have made sure that defbranch is non-null.

>  		html(delim);
>  		html("h=");
>  		html_url_arg(head);
> -- 
> EW


More information about the CGit mailing list