diff --git a/src/x509.c b/src/x509.c index 68b1f9704..a7496df10 100644 --- a/src/x509.c +++ b/src/x509.c @@ -1969,11 +1969,12 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, int nid, int* c, break; default: - if (wolfSSL_ASN1_STRING_set(gn->d.ia5, dns->name, - dns->len) != WOLFSSL_SUCCESS) { + if (wolfSSL_ASN1_STRING_set(gn->d.dNSName, + dns->name, dns->len) != WOLFSSL_SUCCESS) { WOLFSSL_MSG("ASN1_STRING_set failed"); goto err; } + gn->d.dNSName->type = V_ASN1_IA5STRING; } dns = dns->next; diff --git a/tests/api.c b/tests/api.c index b89fc1e5f..c5915d455 100644 --- a/tests/api.c +++ b/tests/api.c @@ -32207,6 +32207,14 @@ static int test_wolfSSL_certs(void) sk = (STACK_OF(GENERAL_NAME)*)X509_get_ext_d2i(x509ext, NID_subject_alt_name, &crit, NULL); + { + int i; + for (i = 0; i < sk_GENERAL_NAME_num(sk); i++) { + GENERAL_NAME* gen = sk_GENERAL_NAME_value(sk, i); + AssertIntEQ(gen->type, GEN_DNS); + AssertIntEQ(gen->d.dNSName->type, V_ASN1_IA5STRING); + } + } /* AssertNotNull(sk); no alt names set */ sk_GENERAL_NAME_free(sk);