diff options
Diffstat (limited to 'ssl/record/methods/tls_common.c')
-rw-r--r-- | ssl/record/methods/tls_common.c | 11 |
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); |