diff options
Diffstat (limited to 'src/lib/libssl/s3_cbc.c')
| -rw-r--r-- | src/lib/libssl/s3_cbc.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/libssl/s3_cbc.c b/src/lib/libssl/s3_cbc.c index 74bd4b47c8..fd4781b64c 100644 --- a/src/lib/libssl/s3_cbc.c +++ b/src/lib/libssl/s3_cbc.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: s3_cbc.c,v 1.8 2014/07/10 08:51:14 tedu Exp $ */ | 1 | /* $OpenBSD: s3_cbc.c,v 1.9 2014/12/15 00:46:53 doug Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 2012 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 2012 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -416,7 +416,8 @@ ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx) | |||
| 416 | * functions, above, we know that data_plus_mac_size is large enough to contain | 416 | * functions, above, we know that data_plus_mac_size is large enough to contain |
| 417 | * a padding byte and MAC. (If the padding was invalid, it might contain the | 417 | * a padding byte and MAC. (If the padding was invalid, it might contain the |
| 418 | * padding too. ) */ | 418 | * padding too. ) */ |
| 419 | void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | 419 | int |
| 420 | ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | ||
| 420 | size_t* md_out_size, const unsigned char header[13], | 421 | size_t* md_out_size, const unsigned char header[13], |
| 421 | const unsigned char *data, size_t data_plus_mac_size, | 422 | const unsigned char *data, size_t data_plus_mac_size, |
| 422 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, | 423 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, |
| @@ -497,8 +498,8 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | |||
| 497 | * supported. */ | 498 | * supported. */ |
| 498 | OPENSSL_assert(0); | 499 | OPENSSL_assert(0); |
| 499 | if (md_out_size) | 500 | if (md_out_size) |
| 500 | *md_out_size = -1; | 501 | *md_out_size = 0; |
| 501 | return; | 502 | return 0; |
| 502 | } | 503 | } |
| 503 | 504 | ||
| 504 | OPENSSL_assert(md_length_size <= MAX_HASH_BIT_COUNT_BYTES); | 505 | OPENSSL_assert(md_length_size <= MAX_HASH_BIT_COUNT_BYTES); |
| @@ -675,7 +676,10 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | |||
| 675 | } | 676 | } |
| 676 | 677 | ||
| 677 | EVP_MD_CTX_init(&md_ctx); | 678 | EVP_MD_CTX_init(&md_ctx); |
| 678 | EVP_DigestInit_ex(&md_ctx, ctx->digest, NULL /* engine */); | 679 | if (!EVP_DigestInit_ex(&md_ctx, ctx->digest, NULL /* engine */)) { |
| 680 | EVP_MD_CTX_cleanup(&md_ctx); | ||
| 681 | return 0; | ||
| 682 | } | ||
| 679 | if (is_sslv3) { | 683 | if (is_sslv3) { |
| 680 | /* We repurpose |hmac_pad| to contain the SSLv3 pad2 block. */ | 684 | /* We repurpose |hmac_pad| to contain the SSLv3 pad2 block. */ |
| 681 | memset(hmac_pad, 0x5c, sslv3_pad_length); | 685 | memset(hmac_pad, 0x5c, sslv3_pad_length); |
| @@ -695,4 +699,6 @@ void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, | |||
| 695 | if (md_out_size) | 699 | if (md_out_size) |
| 696 | *md_out_size = md_out_size_u; | 700 | *md_out_size = md_out_size_u; |
| 697 | EVP_MD_CTX_cleanup(&md_ctx); | 701 | EVP_MD_CTX_cleanup(&md_ctx); |
| 702 | |||
| 703 | return 1; | ||
| 698 | } | 704 | } |
