diff options
Diffstat (limited to 'src/lib/libssl/ssl_sess.c')
-rw-r--r-- | src/lib/libssl/ssl_sess.c | 30 |
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 | |||
874 | SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len) | 866 | SSL_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); |