https://github.com/CESNET/libnetconf2/commit/e2089fe7930ddb23b10602eaa67f049b7d21b7a4 From e2089fe7930ddb23b10602eaa67f049b7d21b7a4 Mon Sep 17 00:00:00 2001 From: Michal Vasko Date: Thu, 30 Jul 2026 16:01:27 +0200 Subject: [PATCH] session openssl UPDATE do not access ASN1_OCTET_STRING directly Obsolete in OpenSSL 4.0. Fixes #612 --- src/session_openssl.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/session_openssl.c b/src/session_openssl.c index 4543730c..77f49607 100644 --- a/src/session_openssl.c +++ b/src/session_openssl.c @@ -618,7 +618,8 @@ nc_tls_get_san_value_type_wrap(void *sans, int idx, char **san_value, NC_TLS_CTN { int ret = 0; GENERAL_NAME *san; - ASN1_OCTET_STRING *ip; + int ip_length; + const unsigned char *ip_data; *san_value = NULL; *san_type = NC_TLS_CTN_UNKNOWN; @@ -643,24 +644,25 @@ nc_tls_get_san_value_type_wrap(void *sans, int idx, char **san_value, NC_TLS_CTN break; case GEN_IPADD: *san_type = NC_TLS_CTN_SAN_IP_ADDRESS; - ip = san->d.iPAddress; - if (ip->length == 4) { - if (asprintf(san_value, "%d.%d.%d.%d", ip->data[0], ip->data[1], ip->data[2], ip->data[3]) == -1) { + ip_data = ASN1_STRING_get0_data(san->d.iPAddress); + ip_length = ASN1_STRING_length(san->d.iPAddress); + if (ip_length == 4) { + if (asprintf(san_value, "%d.%d.%d.%d", ip_data[0], ip_data[1], ip_data[2], ip_data[3]) == -1) { ERRMEM; *san_value = NULL; ret = -1; } - } else if (ip->length == 16) { + } else if (ip_length == 16) { if (asprintf(san_value, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - ip->data[0], ip->data[1], ip->data[2], ip->data[3], ip->data[4], ip->data[5], - ip->data[6], ip->data[7], ip->data[8], ip->data[9], ip->data[10], ip->data[11], - ip->data[12], ip->data[13], ip->data[14], ip->data[15]) == -1) { + ip_data[0], ip_data[1], ip_data[2], ip_data[3], ip_data[4], ip_data[5], + ip_data[6], ip_data[7], ip_data[8], ip_data[9], ip_data[10], ip_data[11], + ip_data[12], ip_data[13], ip_data[14], ip_data[15]) == -1) { ERRMEM; *san_value = NULL; ret = -1; } } else { - WRN(NULL, "SAN IP address in an unknown format (length is %d).", ip->length); + WRN(NULL, "SAN IP address in an unknown format (length is %d).", ip_length); ret = 1; } break;