Always release init_buf after the handshake. Post-handshake retransmit in DTLS no longer needs that scratch space. Change-Id: I2f070675d72426e61b19dab5bcac40bf62b8fd8d Reviewed-on: https://boringssl-review.googlesource.com/8434 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/handshake_client.c b/ssl/handshake_client.c index 8fef3f5..5bc6bdc 100644 --- a/ssl/handshake_client.c +++ b/ssl/handshake_client.c
@@ -505,15 +505,9 @@ /* clean a few things up */ ssl3_cleanup_key_block(ssl); - /* |init_buf| cannot be released in DTLS because post-handshake - * retransmit relies on that buffer being available as scratch space. - * - * TODO(davidben): Fix this. */ - if (!SSL_IS_DTLS(ssl)) { - BUF_MEM_free(ssl->init_buf); - ssl->init_buf = NULL; - ssl->init_num = 0; - } + BUF_MEM_free(ssl->init_buf); + ssl->init_buf = NULL; + ssl->init_num = 0; /* Remove write buffering now. */ ssl_free_wbio_buffer(ssl);
diff --git a/ssl/handshake_server.c b/ssl/handshake_server.c index a466d4a..0d06929 100644 --- a/ssl/handshake_server.c +++ b/ssl/handshake_server.c
@@ -497,15 +497,9 @@ /* clean a few things up */ ssl3_cleanup_key_block(ssl); - /* In DTLS, |init_buf| cannot be released because post-handshake - * retransmit relies on that buffer being available as scratch space. - * - * TODO(davidben): Fix this. */ - if (!SSL_IS_DTLS(ssl)) { - BUF_MEM_free(ssl->init_buf); - ssl->init_buf = NULL; - ssl->init_num = 0; - } + BUF_MEM_free(ssl->init_buf); + ssl->init_buf = NULL; + ssl->init_num = 0; /* remove buffering on output */ ssl_free_wbio_buffer(ssl);