Index | Thread | Search

From:
Florian Obser <florian@openbsd.org>
Subject:
Re: acme-client: treat ASN1_STRING as opaque
To:
Theo Buehler <tb@theobuehler.org>
Cc:
tech@openbsd.org
Date:
Mon, 02 Mar 2026 13:15:24 +0100

Download raw body.

Thread
passes regress, OK florian fwiw

On 2026-03-02 11:21 +01, Theo Buehler <tb@theobuehler.org> wrote:
> Use accessors instead of reaching into ASN1_STRING.
>
> Index: revokeproc.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/acme-client/revokeproc.c,v
> diff -u -p -r1.27 revokeproc.c
> --- revokeproc.c	23 Feb 2026 10:27:49 -0000	1.27
> +++ revokeproc.c	2 Mar 2026 10:20:08 -0000
> @@ -187,16 +187,16 @@ revokeproc(int fd, const char *certfile,
>  			char		 ip_buf[INET6_ADDRSTRLEN];
>  			const char	*ip;
>  
> -			name_len = gen_name->d.iPAddress->length;
> +			name_len = ASN1_STRING_length(gen_name->d.iPAddress);
>  			switch (name_len) {
>  			case 4:
>  				ip = inet_ntop(AF_INET,
> -				    gen_name->d.iPAddress->data,
> +				    ASN1_STRING_get0_data(gen_name->d.iPAddress),
>  				    ip_buf, INET6_ADDRSTRLEN);
>  				break;
>  			case 16:
>  				ip = inet_ntop(AF_INET6,
> -				    gen_name->d.iPAddress->data,
> +				    ASN1_STRING_get0_data(gen_name->d.iPAddress),
>  				    ip_buf, INET6_ADDRSTRLEN);
>  				break;
>  			default:
> @@ -209,9 +209,10 @@ revokeproc(int fd, const char *certfile,
>  			}
>  			name_len = asprintf(&name_buf, "%s", ip);
>  		} else if (gen_name->type == GEN_DNS) {
> -			name_len = gen_name->d.dNSName->length;
> +			name_len = ASN1_STRING_length(gen_name->d.dNSName);
>  			name_len = asprintf(&name_buf, "%.*s",
> -			    name_len, gen_name->d.dNSName->data);
> +			    name_len,
> +			    ASN1_STRING_get0_data(gen_name->d.dNSName));
>  		} else
>  			continue;
>  
>

-- 
In my defence, I have been left unsupervised.