mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 02:37:28 +02:00
Merge pull request #3453 from dgarske/ZD11159
Fix for possible memory leak when overriding error for verify callback
This commit is contained in:
@ -10077,6 +10077,9 @@ int DoVerifyCallback(WOLFSSL_CERT_MANAGER* cm, WOLFSSL* ssl, int ret,
|
|||||||
#endif
|
#endif
|
||||||
char domain[ASN_NAME_MAX];
|
char domain[ASN_NAME_MAX];
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||||
|
int x509Free = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
store = (WOLFSSL_X509_STORE_CTX*)XMALLOC(
|
store = (WOLFSSL_X509_STORE_CTX*)XMALLOC(
|
||||||
@ -10184,6 +10187,7 @@ int DoVerifyCallback(WOLFSSL_CERT_MANAGER* cm, WOLFSSL* ssl, int ret,
|
|||||||
InitX509(x509, 0, heap);
|
InitX509(x509, 0, heap);
|
||||||
if (CopyDecodedToX509(x509, args->dCert) == 0) {
|
if (CopyDecodedToX509(x509, args->dCert) == 0) {
|
||||||
store->current_cert = x509;
|
store->current_cert = x509;
|
||||||
|
x509Free = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FreeX509(x509);
|
FreeX509(x509);
|
||||||
@ -10250,8 +10254,9 @@ int DoVerifyCallback(WOLFSSL_CERT_MANAGER* cm, WOLFSSL* ssl, int ret,
|
|||||||
args->verifyErr = 1;
|
args->verifyErr = 1;
|
||||||
}
|
}
|
||||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||||
if (args->certIdx > 0)
|
if (x509Free) {
|
||||||
FreeX509(x509);
|
FreeX509(x509);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(SESSION_CERTS) && defined(OPENSSL_EXTRA)
|
#if defined(SESSION_CERTS) && defined(OPENSSL_EXTRA)
|
||||||
wolfSSL_sk_X509_free(store->chain);
|
wolfSSL_sk_X509_free(store->chain);
|
||||||
|
Reference in New Issue
Block a user