forked from wolfSSL/wolfssl
clean up memory after test and don't leak x509 with get session peer
This commit is contained in:
committed by
Eric Blankenhorn
parent
258382048d
commit
76eec8884b
16
src/ssl.c
16
src/ssl.c
@ -13468,9 +13468,14 @@ WOLFSSL_X509* wolfSSL_SESSION_get0_peer(WOLFSSL_SESSION* session)
|
|||||||
WOLFSSL_MSG("bad count found");
|
WOLFSSL_MSG("bad count found");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return wolfSSL_get_chain_X509(&session->chain, 0);
|
|
||||||
|
if (session->peer == NULL) {
|
||||||
|
session->peer = wolfSSL_get_chain_X509(&session->chain, 0);
|
||||||
|
}
|
||||||
|
return session->peer;
|
||||||
}
|
}
|
||||||
WOLFSSL_MSG("No session passed in");
|
WOLFSSL_MSG("No session passed in");
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21638,6 +21643,9 @@ WOLFSSL_SESSION* wolfSSL_SESSION_dup(WOLFSSL_SESSION* session)
|
|||||||
} else {
|
} else {
|
||||||
copy->ticket = copy->staticTicket;
|
copy->ticket = copy->staticTicket;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(SESSION_CERTS) && defined(OPENSSL_EXTRA)
|
||||||
|
copy->peer = wolfSSL_X509_dup(session->peer);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return copy;
|
return copy;
|
||||||
@ -21654,6 +21662,12 @@ void wolfSSL_SESSION_free(WOLFSSL_SESSION* session)
|
|||||||
if (session == NULL)
|
if (session == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if defined(SESSION_CERTS) && defined(OPENSSL_EXTRA)
|
||||||
|
if (session->peer) {
|
||||||
|
wolfSSL_X509_free(session->peer);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_EXT_CACHE
|
#ifdef HAVE_EXT_CACHE
|
||||||
if (session->isAlloced) {
|
if (session->isAlloced) {
|
||||||
#ifdef HAVE_SESSION_TICKET
|
#ifdef HAVE_SESSION_TICKET
|
||||||
|
@ -23993,7 +23993,7 @@ static void test_wolfSSL_BIO_should_retry(void)
|
|||||||
wolfSSL_SSLSetIORecv(ssl, forceWantRead);
|
wolfSSL_SSLSetIORecv(ssl, forceWantRead);
|
||||||
|
|
||||||
AssertNotNull(bio = BIO_new(BIO_f_ssl()));
|
AssertNotNull(bio = BIO_new(BIO_f_ssl()));
|
||||||
BIO_set_ssl(bio, ssl, BIO_NOCLOSE);
|
BIO_set_ssl(bio, ssl, BIO_CLOSE);
|
||||||
|
|
||||||
AssertIntLE(BIO_write(bio, msg, msgSz), 0);
|
AssertIntLE(BIO_write(bio, msg, msgSz), 0);
|
||||||
AssertIntNE(BIO_should_retry(bio), 0);
|
AssertIntNE(BIO_should_retry(bio), 0);
|
||||||
@ -24013,6 +24013,7 @@ static void test_wolfSSL_BIO_should_retry(void)
|
|||||||
AssertIntEQ(XMEMCMP(reply, "I hear you fa shizzle!",
|
AssertIntEQ(XMEMCMP(reply, "I hear you fa shizzle!",
|
||||||
XSTRLEN("I hear you fa shizzle!")), 0);
|
XSTRLEN("I hear you fa shizzle!")), 0);
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
wolfSSL_CTX_free(ctx);
|
||||||
|
|
||||||
join_thread(serverThread);
|
join_thread(serverThread);
|
||||||
FreeTcpReady(&ready);
|
FreeTcpReady(&ready);
|
||||||
@ -24217,6 +24218,7 @@ static void test_wolfSSL_BIO_f_md(void)
|
|||||||
|
|
||||||
AssertIntEQ(XMEMCMP(check, testResult, sizeof(testResult)), 0);
|
AssertIntEQ(XMEMCMP(check, testResult, sizeof(testResult)), 0);
|
||||||
|
|
||||||
|
EVP_PKEY_free(key);
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
BIO_free(mem);
|
BIO_free(mem);
|
||||||
|
|
||||||
|
@ -3076,6 +3076,9 @@ struct WOLFSSL_SESSION {
|
|||||||
byte masterSecret[SECRET_LEN]; /* stored secret */
|
byte masterSecret[SECRET_LEN]; /* stored secret */
|
||||||
word16 haveEMS; /* ext master secret flag */
|
word16 haveEMS; /* ext master secret flag */
|
||||||
#ifdef SESSION_CERTS
|
#ifdef SESSION_CERTS
|
||||||
|
#ifdef OPENSSL_EXTRA
|
||||||
|
WOLFSSL_X509* peer; /* peer cert */
|
||||||
|
#endif
|
||||||
WOLFSSL_X509_CHAIN chain; /* peer cert chain, static */
|
WOLFSSL_X509_CHAIN chain; /* peer cert chain, static */
|
||||||
#ifdef WOLFSSL_ALT_CERT_CHAINS
|
#ifdef WOLFSSL_ALT_CERT_CHAINS
|
||||||
WOLFSSL_X509_CHAIN altChain; /* peer alt cert chain, static */
|
WOLFSSL_X509_CHAIN altChain; /* peer alt cert chain, static */
|
||||||
|
Reference in New Issue
Block a user