diff options
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
| -rw-r--r-- | src/lib/libssl/ssl_lib.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index bd3188cdf6..bf10cea685 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_lib.c,v 1.220 2020/08/11 18:39:40 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.221 2020/08/30 15:40:19 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -344,6 +344,9 @@ SSL_new(SSL_CTX *ctx) | |||
| 344 | if (!s->method->internal->ssl_new(s)) | 344 | if (!s->method->internal->ssl_new(s)) |
| 345 | goto err; | 345 | goto err; |
| 346 | 346 | ||
| 347 | if ((s->internal->rl = tls12_record_layer_new()) == NULL) | ||
| 348 | goto err; | ||
| 349 | |||
| 347 | s->references = 1; | 350 | s->references = 1; |
| 348 | s->server = (ctx->method->internal->ssl_accept == ssl_undefined_function) ? 0 : 1; | 351 | s->server = (ctx->method->internal->ssl_accept == ssl_undefined_function) ? 0 : 1; |
| 349 | 352 | ||
| @@ -564,6 +567,8 @@ SSL_free(SSL *s) | |||
| 564 | sk_SRTP_PROTECTION_PROFILE_free(s->internal->srtp_profiles); | 567 | sk_SRTP_PROTECTION_PROFILE_free(s->internal->srtp_profiles); |
| 565 | #endif | 568 | #endif |
| 566 | 569 | ||
| 570 | tls12_record_layer_free(s->internal->rl); | ||
| 571 | |||
| 567 | free(s->internal); | 572 | free(s->internal); |
| 568 | free(s); | 573 | free(s); |
| 569 | } | 574 | } |
| @@ -2535,6 +2540,10 @@ ssl_clear_cipher_read_state(SSL *s) | |||
| 2535 | EVP_MD_CTX_free(s->read_hash); | 2540 | EVP_MD_CTX_free(s->read_hash); |
| 2536 | s->read_hash = NULL; | 2541 | s->read_hash = NULL; |
| 2537 | 2542 | ||
| 2543 | tls12_record_layer_clear_read_state(s->internal->rl); | ||
| 2544 | tls12_record_layer_set_read_seq_num(s->internal->rl, | ||
| 2545 | S3I(s)->read_sequence); | ||
| 2546 | |||
| 2538 | if (s->internal->aead_read_ctx != NULL) { | 2547 | if (s->internal->aead_read_ctx != NULL) { |
| 2539 | EVP_AEAD_CTX_cleanup(&s->internal->aead_read_ctx->ctx); | 2548 | EVP_AEAD_CTX_cleanup(&s->internal->aead_read_ctx->ctx); |
| 2540 | free(s->internal->aead_read_ctx); | 2549 | free(s->internal->aead_read_ctx); |
| @@ -2550,6 +2559,10 @@ ssl_clear_cipher_write_state(SSL *s) | |||
| 2550 | EVP_MD_CTX_free(s->internal->write_hash); | 2559 | EVP_MD_CTX_free(s->internal->write_hash); |
| 2551 | s->internal->write_hash = NULL; | 2560 | s->internal->write_hash = NULL; |
| 2552 | 2561 | ||
| 2562 | tls12_record_layer_clear_write_state(s->internal->rl); | ||
| 2563 | tls12_record_layer_set_write_seq_num(s->internal->rl, | ||
| 2564 | S3I(s)->write_sequence); | ||
| 2565 | |||
| 2553 | if (s->internal->aead_write_ctx != NULL) { | 2566 | if (s->internal->aead_write_ctx != NULL) { |
| 2554 | EVP_AEAD_CTX_cleanup(&s->internal->aead_write_ctx->ctx); | 2567 | EVP_AEAD_CTX_cleanup(&s->internal->aead_write_ctx->ctx); |
| 2555 | free(s->internal->aead_write_ctx); | 2568 | free(s->internal->aead_write_ctx); |
