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 | } |