Theo Buehler([email protected]) on 2021.10.21 13:05:18 +0200:
> This is the first of two diffs to prepare isakmpd for upcoming libcrypto
> changes.  X509_EXTENSION will become opaque so we need to use an accessor.
> I decided to leave accesses into ASN1_OCTET_STRING as they are for
> readability (asn1_string_st is still exposed in OpenSSL's asn1.h).

reads ok
 
> Index: x509.c
> ===================================================================
> RCS file: /cvs/src/sbin/isakmpd/x509.c,v
> retrieving revision 1.120
> diff -u -p -r1.120 x509.c
> --- x509.c    13 Oct 2021 16:57:43 -0000      1.120
> +++ x509.c    21 Oct 2021 10:14:03 -0000
> @@ -1064,9 +1064,10 @@ x509_cert_obtain(u_int8_t *id, size_t id
>  int
>  x509_cert_subjectaltname(X509 *scert, u_int8_t **altname, u_int32_t *len)
>  {
> -     X509_EXTENSION  *subjectaltname;
> -     u_int8_t        *sandata;
> -     int             extpos, santype, sanlen;
> +     X509_EXTENSION          *subjectaltname;
> +     ASN1_OCTET_STRING       *sanasn1data;
> +     u_int8_t                *sandata;
> +     int                      extpos, santype, sanlen;
>  
>       extpos = X509_get_ext_by_NID(scert, NID_subject_alt_name, -1);
>       if (extpos == -1) {
> @@ -1075,16 +1076,16 @@ x509_cert_subjectaltname(X509 *scert, u_
>               return 0;
>       }
>       subjectaltname = X509_get_ext(scert, extpos);
> +     sanasn1data = X509_EXTENSION_get_data(subjectaltname);
>  
> -     if (!subjectaltname || !subjectaltname->value ||
> -         !subjectaltname->value->data ||
> -         subjectaltname->value->length < 4) {
> +     if (!subjectaltname || !sanasn1data || !sanasn1data->data ||
> +         sanasn1data->length < 4) {
>               log_print("x509_cert_subjectaltname: invalid "
>                   "subjectaltname extension");
>               return 0;
>       }
>       /* SSL does not handle unknown ASN stuff well, do it by hand.  */
> -     sandata = subjectaltname->value->data;
> +     sandata = sanasn1data->data;
>       santype = sandata[2] & 0x3f;
>       sanlen = sandata[3];
>       sandata += 4;
> @@ -1094,7 +1095,7 @@ x509_cert_subjectaltname(X509 *scert, u_
>        * extra stuff in subjectAltName, so we will just take the first
>        * salen bytes, and not worry about what follows.
>        */
> -     if (sanlen + 4 > subjectaltname->value->length) {
> +     if (sanlen + 4 > sanasn1data->length) {
>               log_print("x509_cert_subjectaltname: subjectaltname invalid "
>                   "length");
>               return 0;
> 

Reply via email to