diff --git a/src/internal.c b/src/internal.c index 0144abb27..1475d1db4 100644 --- a/src/internal.c +++ b/src/internal.c @@ -9506,6 +9506,11 @@ int CopyDecodedToX509(WOLFSSL_X509* x509, DecodedCert* dCert) dCert->subjectCNLen < 0) return BAD_FUNC_ARG; + if (x509->issuer.name == NULL || x509->subject.name == NULL) { + WOLFSSL_MSG("Either init was not called on X509 or programming error"); + return BAD_FUNC_ARG; + } + x509->version = dCert->version + 1; XSTRNCPY(x509->issuer.name, dCert->issuer, ASN_NAME_MAX); @@ -9513,7 +9518,8 @@ int CopyDecodedToX509(WOLFSSL_X509* x509, DecodedCert* dCert) x509->issuer.sz = (int)XSTRLEN(x509->issuer.name) + 1; #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) if (dCert->issuerName != NULL) { - wolfSSL_X509_set_issuer_name(x509, dCert->issuerName); + wolfSSL_X509_set_issuer_name(x509, + (WOLFSSL_X509_NAME*)dCert->issuerName); x509->issuer.x509 = x509; } #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ @@ -9523,7 +9529,8 @@ int CopyDecodedToX509(WOLFSSL_X509* x509, DecodedCert* dCert) x509->subject.sz = (int)XSTRLEN(x509->subject.name) + 1; #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) if (dCert->subjectName != NULL) { - wolfSSL_X509_set_subject_name(x509, dCert->subjectName); + wolfSSL_X509_set_subject_name(x509, + (WOLFSSL_X509_NAME*)dCert->subjectName); x509->subject.x509 = x509; } #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ @@ -11207,6 +11214,7 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, ssl->secure_renegotiation->enabled) { /* free old peer cert */ FreeX509(&ssl->peerCert); + InitX509(&ssl->peerCert, 0, ssl->heap); } #endif diff --git a/src/ssl.c b/src/ssl.c index de5d18e08..4acabbaea 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -37999,11 +37999,8 @@ err: * returns 0 on success */ static int RebuildFullName(WOLFSSL_X509_NAME* name) { - int totalLen = 0; - int i; + int totalLen = 0, i, idx, entryCount = 0; char* fullName; - int idx; - int entryCount = 0; if (name == NULL) return BAD_FUNC_ARG; @@ -38016,7 +38013,7 @@ err: e = &name->entry[i]; obj = wolfSSL_X509_NAME_ENTRY_get_object(e); - totalLen += XSTRLEN(obj->sName) + 2; /* +2 for '/' and '=' */ + totalLen += (int)XSTRLEN(obj->sName) + 2;/*+2 for '/' and '=' */ totalLen += wolfSSL_ASN1_STRING_length(e->value); } } @@ -47420,6 +47417,7 @@ static int wolfSSL_X509_NAME_copy(WOLFSSL_X509_NAME* from, wolfSSL_X509_NAME_add_entry(to, ne, i, 1); } to->entrySz = from->entrySz; + (void)heap; return WOLFSSL_SUCCESS; } diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index b677f85bc..0e9cd2b06 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -5045,9 +5045,9 @@ void FreeDecodedCert(DecodedCert* cert) #endif /* WOLFSSL_SEP */ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) if (cert->issuerName != NULL) - wolfSSL_X509_NAME_free(cert->issuerName); + wolfSSL_X509_NAME_free((WOLFSSL_X509_NAME*)cert->issuerName); if (cert->subjectName != NULL) - wolfSSL_X509_NAME_free(cert->subjectName); + wolfSSL_X509_NAME_free((WOLFSSL_X509_NAME*)cert->subjectName); #endif /* OPENSSL_EXTRA */ #ifdef WOLFSSL_RENESAS_TSIP_TLS if (cert->tsip_encRsaKeyIdx != NULL)