summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2019-04-25 04:57:36 +0000
committerjsing <>2019-04-25 04:57:36 +0000
commit15c975b54284a73a7a5d10902576c0734eb5ae58 (patch)
tree027195f15fcb6ce0e5b084f27f53820eb9c01bef
parent36f65c71f38fa570364b27285824fff86fcf0460 (diff)
downloadopenbsd-15c975b54284a73a7a5d10902576c0734eb5ae58.tar.gz
openbsd-15c975b54284a73a7a5d10902576c0734eb5ae58.tar.bz2
openbsd-15c975b54284a73a7a5d10902576c0734eb5ae58.zip
Use calloc/freezero when allocating and freeing the session ticket data.
The decrypted session ticket contains key material. ok tb@
-rw-r--r--src/lib/libssl/t1_lib.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index 3cde388d6d..162cfe5ebb 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.163 2019/04/25 04:54:35 jsing Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.164 2019/04/25 04:57:36 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 *
@@ -875,8 +875,9 @@ tls_decrypt_ticket(SSL *s, CBS *session_id, CBS *ticket, SSL_SESSION **psess)
875{ 875{
876 CBS ticket_name, ticket_iv, ticket_encdata, ticket_hmac; 876 CBS ticket_name, ticket_iv, ticket_encdata, ticket_hmac;
877 SSL_SESSION *sess = NULL; 877 SSL_SESSION *sess = NULL;
878 size_t session_id_len;
879 unsigned char *sdec = NULL; 878 unsigned char *sdec = NULL;
879 size_t sdec_len = 0;
880 size_t session_id_len;
880 const unsigned char *p; 881 const unsigned char *p;
881 unsigned char hmac[EVP_MAX_MD_SIZE]; 882 unsigned char hmac[EVP_MAX_MD_SIZE];
882 HMAC_CTX *hctx = NULL; 883 HMAC_CTX *hctx = NULL;
@@ -978,7 +979,8 @@ tls_decrypt_ticket(SSL *s, CBS *session_id, CBS *ticket, SSL_SESSION **psess)
978 goto derr; 979 goto derr;
979 980
980 /* Attempt to decrypt session data. */ 981 /* Attempt to decrypt session data. */
981 if ((sdec = malloc(CBS_len(&ticket_encdata))) == NULL) 982 sdec_len = CBS_len(&ticket_encdata);
983 if ((sdec = calloc(1, sdec_len)) == NULL)
982 goto err; 984 goto err;
983 if (EVP_DecryptUpdate(cctx, sdec, &slen, CBS_data(&ticket_encdata), 985 if (EVP_DecryptUpdate(cctx, sdec, &slen, CBS_data(&ticket_encdata),
984 CBS_len(&ticket_encdata)) <= 0) 986 CBS_len(&ticket_encdata)) <= 0)
@@ -1025,7 +1027,7 @@ tls_decrypt_ticket(SSL *s, CBS *session_id, CBS *ticket, SSL_SESSION **psess)
1025 goto done; 1027 goto done;
1026 1028
1027 done: 1029 done:
1028 free(sdec); 1030 freezero(sdec, sdec_len);
1029 EVP_CIPHER_CTX_free(cctx); 1031 EVP_CIPHER_CTX_free(cctx);
1030 HMAC_CTX_free(hctx); 1032 HMAC_CTX_free(hctx);
1031 SSL_SESSION_free(sess); 1033 SSL_SESSION_free(sess);