diff options
Diffstat (limited to '')
| -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); |
