提交 c7238204 编写于 作者: D Dr. Stephen Henson

Avoid duplication.

We always free the handshake buffer when digests are freed so move
it into ssl_free_digest_list()
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NMatt Caswell <matt@openssl.org>
上级 124037fd
......@@ -476,15 +476,21 @@ void ssl3_cleanup_key_block(SSL *s)
void ssl3_init_finished_mac(SSL *s)
{
BIO_free(s->s3->handshake_buffer);
ssl3_free_digest_list(s);
s->s3->handshake_buffer = BIO_new(BIO_s_mem());
(void)BIO_set_close(s->s3->handshake_buffer, BIO_CLOSE);
}
/*
* Free digest list. Also frees handshake buffer since they are always freed
* together.
*/
void ssl3_free_digest_list(SSL *s)
{
int i;
BIO_free(s->s3->handshake_buffer);
s->s3->handshake_buffer = NULL;
if (!s->s3->handshake_dgst)
return;
for (i = 0; i < SSL_MAX_DIGEST; i++) {
......
......@@ -2911,7 +2911,6 @@ void ssl3_free(SSL *s)
OPENSSL_free(s->s3->tmp.ciphers_raw);
OPENSSL_clear_free(s->s3->tmp.pms, s->s3->tmp.pmslen);
OPENSSL_free(s->s3->tmp.peer_sigalgs);
BIO_free(s->s3->handshake_buffer);
ssl3_free_digest_list(s);
OPENSSL_free(s->s3->alpn_selected);
......@@ -2955,8 +2954,6 @@ void ssl3_clear(SSL *s)
#endif /* !OPENSSL_NO_EC */
init_extra = s->s3->init_extra;
BIO_free(s->s3->handshake_buffer);
s->s3->handshake_buffer = NULL;
ssl3_free_digest_list(s);
if (s->s3->alpn_selected) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册