summaryrefslogtreecommitdiffstats
path: root/ssl/record/methods/tls_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'ssl/record/methods/tls_common.c')
-rw-r--r--ssl/record/methods/tls_common.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ssl/record/methods/tls_common.c b/ssl/record/methods/tls_common.c
index b7481c071f..bf6dc0d1f5 100644
--- a/ssl/record/methods/tls_common.c
+++ b/ssl/record/methods/tls_common.c
@@ -1434,11 +1434,13 @@ static void tls_int_free(OSSL_RECORD_LAYER *rl)
tls_release_write_buffer(rl);
EVP_CIPHER_CTX_free(rl->enc_ctx);
+ EVP_MAC_CTX_free(rl->mac_ctx);
EVP_MD_CTX_free(rl->md_ctx);
#ifndef OPENSSL_NO_COMP
COMP_CTX_free(rl->compctx);
#endif
-
+ OPENSSL_free(rl->iv);
+ OPENSSL_free(rl->nonce);
if (rl->version == SSL3_VERSION)
OPENSSL_cleanse(rl->mac_secret, sizeof(rl->mac_secret));
@@ -1914,10 +1916,13 @@ int tls_retry_write_records(OSSL_RECORD_LAYER *rl)
else
ret = OSSL_RECORD_RETURN_SUCCESS;
} else {
- if (BIO_should_retry(rl->bio))
+ if (BIO_should_retry(rl->bio)) {
ret = OSSL_RECORD_RETURN_RETRY;
- else
+ } else {
+ ERR_raise_data(ERR_LIB_SYS, get_last_sys_error(),
+ "tls_retry_write_records failure");
ret = OSSL_RECORD_RETURN_FATAL;
+ }
}
} else {
RLAYERfatal(rl, SSL_AD_INTERNAL_ERROR, SSL_R_BIO_NOT_SET);