diff options
author | Lutz Jänicke <jaenicke@openssl.org> | 2002-02-26 21:50:28 +0000 |
---|---|---|
committer | Lutz Jänicke <jaenicke@openssl.org> | 2002-02-26 21:50:28 +0000 |
commit | ce1e801013a739747693f675f03c3c067bd8abd2 (patch) | |
tree | 50501e8fedd7835880265344d03f609bae68a9cd /ssl | |
parent | 03a6dcdf3157afdcf8260fbb0b9c8e58b26540bd (diff) |
Make sure to remove bad sessions in SSL_clear() (found by Yoram Zahavi).
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/ssl_lib.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 24cec2afe5..4a32d3d659 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -85,7 +85,6 @@ OPENSSL_GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={ int SSL_clear(SSL *s) { - int state; if (s->method == NULL) { @@ -110,9 +109,14 @@ int SSL_clear(SSL *s) } #endif - state=s->state; /* Keep to check if we throw away the session-id */ s->type=0; + if (ssl_clear_bad_session(s)) + { + SSL_SESSION_free(s->session); + s->session=NULL; + } + s->state=SSL_ST_BEFORE|((s->server)?SSL_ST_ACCEPT:SSL_ST_CONNECT); s->version=s->method->version; @@ -131,12 +135,6 @@ int SSL_clear(SSL *s) ssl_clear_cipher_ctx(s); - if (ssl_clear_bad_session(s)) - { - SSL_SESSION_free(s->session); - s->session=NULL; - } - s->first_packet=0; #if 1 |