Index | Thread | Search

From:
Crystal Kolipe <kolipe.c@exoticsilicon.com>
Subject:
Re: relayd: fix dead store
To:
Rafael Sadowski <rafael@sizeofvoid.org>
Cc:
Theo Buehler <tb@theobuehler.org>, tech@openbsd.org
Date:
Mon, 29 Dec 2025 10:44:56 +0000

Download raw body.

Thread
This version reads ok to me.

On Mon, Dec 29, 2025 at 11:39:12AM +0100, Rafael Sadowski wrote:
> diff --git a/usr.sbin/relayd/carp.c b/usr.sbin/relayd/carp.c
> index 6a6a55a0fbb..34f9c16492b 100644
> --- a/usr.sbin/relayd/carp.c
> +++ b/usr.sbin/relayd/carp.c
> @@ -61,29 +61,28 @@ carp_demote_init(char *group, int force)
>  	struct carpgroup	*c;
>  	int			 level;
>  
> -	if ((c = carp_group_find(group)) == NULL) {
> -		if ((c = calloc(1, sizeof(struct carpgroup))) == NULL) {
> -			log_warn("%s: calloc", __func__);
> -			return (-1);
> -		}
> -		if ((c->group = strdup(group)) == NULL) {
> -			log_warn("%s: strdup", __func__);
> -			free(c);
> -			return (-1);
> -		}
> -
> -		/* only demote if this group already is demoted */
> -		if ((level = carp_demote_get(group)) == -1) {
> -			free(c->group);
> -			free(c);
> -			return (-1);
> -		}
> -		if (level > 0 || force)
> -			c->do_demote = 1;
> -
> -		TAILQ_INSERT_TAIL(&carpgroups, c, entry);
> +	if (carp_group_find(group) != NULL)
> +		return (0);
> +
> +	if ((c = calloc(1, sizeof(struct carpgroup))) == NULL) {
> +		log_warn("%s: calloc", __func__);
> +		return (-1);
> +	}
> +	if ((c->group = strdup(group)) == NULL) {
> +		log_warn("%s: strdup", __func__);
> +		free(c);
> +		return (-1);
> +	}
> +	/* only demote if this group already is demoted */
> +	if ((level = carp_demote_get(group)) == -1) {
> +		free(c->group);
> +		free(c);
> +		return (-1);
>  	}
> +	if (level > 0 || force)
> +		c->do_demote = 1;
>  
> +	TAILQ_INSERT_TAIL(&carpgroups, c, entry);
>  	return (0);
>  }
>  
>