diff options
author | Robert Sloan <varomodt@google.com> | 2017-10-30 14:10:28 -0700 |
---|---|---|
committer | Robert Sloan <varomodt@google.com> | 2017-10-30 14:10:51 -0700 |
commit | 29c1d2cf8620ad14e06d8e7ff91db8f4de04d481 (patch) | |
tree | 40c62dc13cf10cc29eab8e9caf1f6cf7a86ffee4 /src/ssl/s3_lib.cc | |
parent | a7dc4759b5f834b50a9be8dd3ec1abb7ff3e5bc5 (diff) | |
download | boringssl-29c1d2cf8620ad14e06d8e7ff91db8f4de04d481.tar.gz |
external/boringssl: Sync to ba94746eb2b4b59a0eb72047e4ca2d2d54454c87.
This includes the following changes:
https://boringssl.googlesource.com/boringssl/+log/7f8c553d7f4db0a6ce727f2986d41bf8fe8ec4bf..ba94746eb2b4b59a0eb72047e4ca2d2d54454c87
Test: BoringSSL CTS Presubmits
Change-Id: I5283ca8ec80f4abbc2543fece2ecf2b33240c6e4
Diffstat (limited to 'src/ssl/s3_lib.cc')
-rw-r--r-- | src/ssl/s3_lib.cc | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/src/ssl/s3_lib.cc b/src/ssl/s3_lib.cc index f3f99fa4..b925cd72 100644 --- a/src/ssl/s3_lib.cc +++ b/src/ssl/s3_lib.cc @@ -164,30 +164,35 @@ namespace bssl { -bool ssl3_new(SSL *ssl) { - UniquePtr<SSLAEADContext> aead_read_ctx = - SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl)); - UniquePtr<SSLAEADContext> aead_write_ctx = - SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl)); - if (!aead_read_ctx || !aead_write_ctx) { - return false; - } +SSL3_STATE::SSL3_STATE() + : skip_early_data(false), + have_version(false), + v2_hello_done(false), + is_v2_hello(false), + has_message(false), + initial_handshake_complete(false), + session_reused(false), + send_connection_binding(false), + tlsext_channel_id_valid(false), + key_update_pending(false), + wpend_pending(false) {} + +SSL3_STATE::~SSL3_STATE() {} - SSL3_STATE *s3 = (SSL3_STATE *)OPENSSL_malloc(sizeof *s3); - if (s3 == NULL) { +bool ssl3_new(SSL *ssl) { + UniquePtr<SSL3_STATE> s3 = MakeUnique<SSL3_STATE>(); + if (!s3) { return false; } - OPENSSL_memset(s3, 0, sizeof *s3); + s3->aead_read_ctx = SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl)); + s3->aead_write_ctx = SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl)); s3->hs = ssl_handshake_new(ssl); - if (s3->hs == NULL) { - OPENSSL_free(s3); + if (!s3->aead_read_ctx || !s3->aead_write_ctx || !s3->hs) { return false; } - s3->aead_read_ctx = aead_read_ctx.release(); - s3->aead_write_ctx = aead_write_ctx.release(); - ssl->s3 = s3; + ssl->s3 = s3.release(); // Set the version to the highest supported version. // @@ -203,20 +208,7 @@ void ssl3_free(SSL *ssl) { return; } - ssl_read_buffer_clear(ssl); - ssl_write_buffer_clear(ssl); - - ERR_SAVE_STATE_free(ssl->s3->read_error); - SSL_SESSION_free(ssl->s3->established_session); - ssl_handshake_free(ssl->s3->hs); - OPENSSL_free(ssl->s3->next_proto_negotiated); - OPENSSL_free(ssl->s3->alpn_selected); - OPENSSL_free(ssl->s3->hostname); - Delete(ssl->s3->aead_read_ctx); - Delete(ssl->s3->aead_write_ctx); - BUF_MEM_free(ssl->s3->pending_flight); - - OPENSSL_free(ssl->s3); + Delete(ssl->s3); ssl->s3 = NULL; } |