summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_sess.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_sess.c')
-rw-r--r--src/lib/libssl/ssl_sess.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index f6e2642aeb..0970633a86 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_sess.c,v 1.53 2016/11/02 11:21:05 jsing Exp $ */ 1/* $OpenBSD: ssl_sess.c,v 1.54 2017/01/22 03:50:45 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 *
@@ -199,10 +199,14 @@ SSL_SESSION_new(void)
199{ 199{
200 SSL_SESSION *ss; 200 SSL_SESSION *ss;
201 201
202 ss = calloc(1, sizeof(SSL_SESSION)); 202 if ((ss = calloc(1, sizeof(*ss))) == NULL) {
203 if (ss == NULL) {
204 SSLerr(SSL_F_SSL_SESSION_NEW, ERR_R_MALLOC_FAILURE); 203 SSLerr(SSL_F_SSL_SESSION_NEW, ERR_R_MALLOC_FAILURE);
205 return (0); 204 return (NULL);
205 }
206 if ((ss->internal = calloc(1, sizeof(*ss->internal))) == NULL) {
207 free(ss);
208 SSLerr(SSL_F_SSL_SESSION_NEW, ERR_R_MALLOC_FAILURE);
209 return (NULL);
206 } 210 }
207 211
208 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */ 212 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */
@@ -706,6 +710,10 @@ SSL_SESSION_free(SSL_SESSION *ss)
706 free(ss->tlsext_ecpointformatlist); 710 free(ss->tlsext_ecpointformatlist);
707 ss->tlsext_ellipticcurvelist_length = 0; 711 ss->tlsext_ellipticcurvelist_length = 0;
708 free(ss->tlsext_ellipticcurvelist); 712 free(ss->tlsext_ellipticcurvelist);
713
714 explicit_bzero(ss->internal, sizeof(*ss->internal));
715 free(ss->internal);
716
709 explicit_bzero(ss, sizeof(*ss)); 717 explicit_bzero(ss, sizeof(*ss));
710 free(ss); 718 free(ss);
711} 719}