summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/t1_lib.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index 2147908819..2421227c8a 100644
--- a/src/lib/libssl/t1_lib.c
+++ b/src/lib/libssl/t1_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: t1_lib.c,v 1.155 2019/04/21 10:17:25 jsing Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.156 2019/04/21 14:38:32 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 *
@@ -955,12 +955,14 @@ tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen,
955 /* Move p after IV to start of encrypted ticket, update length */ 955 /* Move p after IV to start of encrypted ticket, update length */
956 p = etick + 16 + EVP_CIPHER_CTX_iv_length(&ctx); 956 p = etick + 16 + EVP_CIPHER_CTX_iv_length(&ctx);
957 eticklen -= 16 + EVP_CIPHER_CTX_iv_length(&ctx); 957 eticklen -= 16 + EVP_CIPHER_CTX_iv_length(&ctx);
958 sdec = malloc(eticklen); 958 if ((sdec = malloc(eticklen)) == NULL) {
959 if (sdec == NULL ||
960 EVP_DecryptUpdate(&ctx, sdec, &slen, p, eticklen) <= 0) {
961 ret = -1; 959 ret = -1;
962 goto done; 960 goto done;
963 } 961 }
962 if (EVP_DecryptUpdate(&ctx, sdec, &slen, p, eticklen) <= 0) {
963 ret = 2;
964 goto done;
965 }
964 if (EVP_DecryptFinal_ex(&ctx, sdec + slen, &mlen) <= 0) { 966 if (EVP_DecryptFinal_ex(&ctx, sdec + slen, &mlen) <= 0) {
965 ret = 2; 967 ret = 2;
966 goto done; 968 goto done;
@@ -973,7 +975,6 @@ tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen,
973 * For session parse failure, indicate that we need to send a 975 * For session parse failure, indicate that we need to send a
974 * new ticket. 976 * new ticket.
975 */ 977 */
976 ERR_clear_error();
977 ret = 2; 978 ret = 2;
978 goto done; 979 goto done;
979 } 980 }
@@ -1002,5 +1003,8 @@ tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen,
1002 HMAC_CTX_cleanup(&hctx); 1003 HMAC_CTX_cleanup(&hctx);
1003 EVP_CIPHER_CTX_cleanup(&ctx); 1004 EVP_CIPHER_CTX_cleanup(&ctx);
1004 1005
1006 if (ret == 2)
1007 ERR_clear_error();
1008
1005 return ret; 1009 return ret;
1006} 1010}