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.c30
1 files changed, 9 insertions, 21 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index 05c6948efc..632d6a6860 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -366,8 +366,7 @@ ssl_get_new_session(SSL *s, int session)
366 } 366 }
367#ifndef OPENSSL_NO_EC 367#ifndef OPENSSL_NO_EC
368 if (s->tlsext_ecpointformatlist) { 368 if (s->tlsext_ecpointformatlist) {
369 if (ss->tlsext_ecpointformatlist != NULL) 369 free(ss->tlsext_ecpointformatlist);
370 free(ss->tlsext_ecpointformatlist);
371 if ((ss->tlsext_ecpointformatlist = malloc(s->tlsext_ecpointformatlist_length)) == NULL) { 370 if ((ss->tlsext_ecpointformatlist = malloc(s->tlsext_ecpointformatlist_length)) == NULL) {
372 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE); 371 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE);
373 SSL_SESSION_free(ss); 372 SSL_SESSION_free(ss);
@@ -377,8 +376,7 @@ ssl_get_new_session(SSL *s, int session)
377 memcpy(ss->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist_length); 376 memcpy(ss->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist_length);
378 } 377 }
379 if (s->tlsext_ellipticcurvelist) { 378 if (s->tlsext_ellipticcurvelist) {
380 if (ss->tlsext_ellipticcurvelist != NULL) 379 free(ss->tlsext_ellipticcurvelist);
381 free(ss->tlsext_ellipticcurvelist);
382 if ((ss->tlsext_ellipticcurvelist = malloc(s->tlsext_ellipticcurvelist_length)) == NULL) { 380 if ((ss->tlsext_ellipticcurvelist = malloc(s->tlsext_ellipticcurvelist_length)) == NULL) {
383 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE); 381 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE);
384 SSL_SESSION_free(ss); 382 SSL_SESSION_free(ss);
@@ -704,24 +702,18 @@ SSL_SESSION_free(SSL_SESSION *ss)
704 if (ss->ciphers != NULL) 702 if (ss->ciphers != NULL)
705 sk_SSL_CIPHER_free(ss->ciphers); 703 sk_SSL_CIPHER_free(ss->ciphers);
706#ifndef OPENSSL_NO_TLSEXT 704#ifndef OPENSSL_NO_TLSEXT
707 if (ss->tlsext_hostname != NULL) 705 free(ss->tlsext_hostname);
708 free(ss->tlsext_hostname); 706 free(ss->tlsext_tick);
709 if (ss->tlsext_tick != NULL)
710 free(ss->tlsext_tick);
711#ifndef OPENSSL_NO_EC 707#ifndef OPENSSL_NO_EC
712 ss->tlsext_ecpointformatlist_length = 0; 708 ss->tlsext_ecpointformatlist_length = 0;
713 if (ss->tlsext_ecpointformatlist != NULL) 709 free(ss->tlsext_ecpointformatlist);
714 free(ss->tlsext_ecpointformatlist);
715 ss->tlsext_ellipticcurvelist_length = 0; 710 ss->tlsext_ellipticcurvelist_length = 0;
716 if (ss->tlsext_ellipticcurvelist != NULL) 711 free(ss->tlsext_ellipticcurvelist);
717 free(ss->tlsext_ellipticcurvelist);
718#endif /* OPENSSL_NO_EC */ 712#endif /* OPENSSL_NO_EC */
719#endif 713#endif
720#ifndef OPENSSL_NO_PSK 714#ifndef OPENSSL_NO_PSK
721 if (ss->psk_identity_hint != NULL) 715 free(ss->psk_identity_hint);
722 free(ss->psk_identity_hint); 716 free(ss->psk_identity);
723 if (ss->psk_identity != NULL)
724 free(ss->psk_identity);
725#endif 717#endif
726 OPENSSL_cleanse(ss, sizeof(*ss)); 718 OPENSSL_cleanse(ss, sizeof(*ss));
727 free(ss); 719 free(ss);
@@ -874,11 +866,7 @@ int
874SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len) 866SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len)
875{ 867{
876 if (s->version >= TLS1_VERSION) { 868 if (s->version >= TLS1_VERSION) {
877 if (s->tlsext_session_ticket) { 869 free(s->tlsext_session_ticket);
878 free(s->tlsext_session_ticket);
879 s->tlsext_session_ticket = NULL;
880 }
881
882 s->tlsext_session_ticket = malloc(sizeof(TLS_SESSION_TICKET_EXT) + ext_len); 870 s->tlsext_session_ticket = malloc(sizeof(TLS_SESSION_TICKET_EXT) + ext_len);
883 if (!s->tlsext_session_ticket) { 871 if (!s->tlsext_session_ticket) {
884 SSLerr(SSL_F_SSL_SET_SESSION_TICKET_EXT, ERR_R_MALLOC_FAILURE); 872 SSLerr(SSL_F_SSL_SET_SESSION_TICKET_EXT, ERR_R_MALLOC_FAILURE);