summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2014-06-10 11:26:34 +0000
committerjsing <>2014-06-10 11:26:34 +0000
commit09ba6d078e8d82c7c1639a2749f8e7b22a5b4b47 (patch)
treea4fd1f8ebbb194eedf6b70d53ea5b7a81d76c9c0 /src
parentd1cb2eb4f0f9779a6be2986e760ea8354285bed9 (diff)
downloadopenbsd-09ba6d078e8d82c7c1639a2749f8e7b22a5b4b47.tar.gz
openbsd-09ba6d078e8d82c7c1639a2749f8e7b22a5b4b47.tar.bz2
openbsd-09ba6d078e8d82c7c1639a2749f8e7b22a5b4b47.zip
Ensure ssl3_final_finish_mac() returns failure if either the MD5 or SHA1
handshake MAC calculation fails. Currently, the result from both ssl3_handshake_mac() calls is added together. This means that unless both MD5 and SHA1 fail, a positive value will be returned to the caller, indicating success rather than failure. ok deraadt@ miod@ sthen@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/src/ssl/s3_enc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/libssl/src/ssl/s3_enc.c b/src/lib/libssl/src/ssl/s3_enc.c
index 8a1758f8b7..dbefad77b2 100644
--- a/src/lib/libssl/src/ssl/s3_enc.c
+++ b/src/lib/libssl/src/ssl/s3_enc.c
@@ -625,11 +625,16 @@ ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p)
625int 625int
626ssl3_final_finish_mac(SSL *s, const char *sender, int len, unsigned char *p) 626ssl3_final_finish_mac(SSL *s, const char *sender, int len, unsigned char *p)
627{ 627{
628 int ret; 628 int ret_md5, ret_sha1;
629 ret = ssl3_handshake_mac(s, NID_md5, sender, len, p); 629
630 p += ret; 630 ret_md5 = ssl3_handshake_mac(s, NID_md5, sender, len, p);
631 ret += ssl3_handshake_mac(s, NID_sha1, sender, len, p); 631 if (ret_md5 == 0)
632 return (ret); 632 return 0;
633 p += ret_md5;
634 ret_sha1 = ssl3_handshake_mac(s, NID_sha1, sender, len, p);
635 if (ret_sha1 == 0)
636 return 0;
637 return (ret_md5 + ret_sha1);
633} 638}
634 639
635static int 640static int