summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_cbc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/s3_cbc.c')
-rw-r--r--src/lib/libssl/s3_cbc.c16
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. ) */
419void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out, 419int
420ssl3_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}