summaryrefslogtreecommitdiff
path: root/src/ssl/s3_lib.cc
diff options
context:
space:
mode:
authorRobert Sloan <varomodt@google.com>2017-10-30 14:10:28 -0700
committerRobert Sloan <varomodt@google.com>2017-10-30 14:10:51 -0700
commit29c1d2cf8620ad14e06d8e7ff91db8f4de04d481 (patch)
tree40c62dc13cf10cc29eab8e9caf1f6cf7a86ffee4 /src/ssl/s3_lib.cc
parenta7dc4759b5f834b50a9be8dd3ec1abb7ff3e5bc5 (diff)
downloadboringssl-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.cc52
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;
}