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.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index fbc30b94e6..664f8c2230 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -60,7 +60,6 @@
60#include <openssl/lhash.h> 60#include <openssl/lhash.h>
61#include <openssl/rand.h> 61#include <openssl/rand.h>
62#include "ssl_locl.h" 62#include "ssl_locl.h"
63#include "cryptlib.h"
64 63
65static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s); 64static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s);
66static void SSL_SESSION_list_add(SSL_CTX *ctx,SSL_SESSION *s); 65static void SSL_SESSION_list_add(SSL_CTX *ctx,SSL_SESSION *s);
@@ -309,12 +308,9 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len)
309 if (copy) 308 if (copy)
310 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION); 309 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
311 310
312 /* Add the externally cached session to the internal 311 /* The following should not return 1, otherwise,
313 * cache as well if and only if we are supposed to. */ 312 * things are very strange */
314 if(!(s->ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_STORE)) 313 SSL_CTX_add_session(s->ctx,ret);
315 /* The following should not return 1, otherwise,
316 * things are very strange */
317 SSL_CTX_add_session(s->ctx,ret);
318 } 314 }
319 if (ret == NULL) 315 if (ret == NULL)
320 goto err; 316 goto err;
@@ -528,13 +524,13 @@ void SSL_SESSION_free(SSL_SESSION *ss)
528 524
529 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data); 525 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
530 526
531 OPENSSL_cleanse(ss->key_arg,sizeof ss->key_arg); 527 memset(ss->key_arg,0,SSL_MAX_KEY_ARG_LENGTH);
532 OPENSSL_cleanse(ss->master_key,sizeof ss->master_key); 528 memset(ss->master_key,0,SSL_MAX_MASTER_KEY_LENGTH);
533 OPENSSL_cleanse(ss->session_id,sizeof ss->session_id); 529 memset(ss->session_id,0,SSL_MAX_SSL_SESSION_ID_LENGTH);
534 if (ss->sess_cert != NULL) ssl_sess_cert_free(ss->sess_cert); 530 if (ss->sess_cert != NULL) ssl_sess_cert_free(ss->sess_cert);
535 if (ss->peer != NULL) X509_free(ss->peer); 531 if (ss->peer != NULL) X509_free(ss->peer);
536 if (ss->ciphers != NULL) sk_SSL_CIPHER_free(ss->ciphers); 532 if (ss->ciphers != NULL) sk_SSL_CIPHER_free(ss->ciphers);
537 OPENSSL_cleanse(ss,sizeof(*ss)); 533 memset(ss,0,sizeof(*ss));
538 OPENSSL_free(ss); 534 OPENSSL_free(ss);
539 } 535 }
540 536