diff --git a/src/ssl.c b/src/ssl.c index 2713f941b..69dc58ddc 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -6934,6 +6934,7 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, } obj->type = BASIC_CA_OID; obj->grp = oidCertExtType; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; } else { WOLFSSL_MSG("No Basic Constraint set"); @@ -6966,6 +6967,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->type = dns->type; obj->grp = oidCertExtType; obj->obj = (byte*)dns->name; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA ; /* set app derefrenced pointers */ obj->d.ia5_internal.data = dns->name; @@ -7004,6 +7007,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = x509->CRLInfo; obj->objSz = x509->CRLInfoSz; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA ; } else { WOLFSSL_MSG("No CRL dist set"); @@ -7025,6 +7030,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = x509->authInfo; obj->objSz = x509->authInfoSz; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Auth Info set"); @@ -7046,6 +7053,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = x509->authKeyId; obj->objSz = x509->authKeyIdSz; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Auth Key set"); @@ -7067,6 +7076,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = x509->subjKeyId; obj->objSz = x509->subjKeyIdSz; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Subject Key set"); @@ -7099,6 +7110,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = (byte*)(x509->certPolicies[i]); obj->objSz = MAX_CERTPOL_SZ; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; if (wolfSSL_sk_ASN1_OBJECT_push(sk, obj) != WOLFSSL_SUCCESS) { WOLFSSL_MSG("Error pushing ASN1 object onto stack"); @@ -7117,6 +7130,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = (byte*)(x509->certPolicies[i]); obj->objSz = MAX_CERTPOL_SZ; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Cert Policy set"); @@ -7136,6 +7151,7 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, } obj->type = CERT_POLICY_OID; obj->grp = oidCertExtType; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; } else { WOLFSSL_MSG("No Cert Policy set"); @@ -7161,6 +7177,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = (byte*)&(x509->keyUsage); obj->objSz = sizeof(word16); + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Key Usage set"); @@ -7191,6 +7209,8 @@ void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, obj->grp = oidCertExtType; obj->obj = x509->extKeyUsageSrc; obj->objSz = x509->extKeyUsageSz; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA; } else { WOLFSSL_MSG("No Extended Key Usage set"); @@ -30182,9 +30202,9 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl) WOLFSSL_MSG("Issue creating WOLFSSL_ASN1_OBJECT struct"); return NULL; } - obj->dynamic = WOLFSSL_ASN1_DYNAMIC; + obj->dynamic |= WOLFSSL_ASN1_DYNAMIC; } else { - obj->dynamic = 0; + obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC; } obj->type = id; obj->grp = type;