Store verify_result with sessions to avoid potential security hole.
For the server side this was already done one year ago :-(
This commit is contained in:
parent
666d437538
commit
673d7ac121
4 changed files with 9 additions and 0 deletions
6
CHANGES
6
CHANGES
|
@ -4,6 +4,12 @@
|
|||
|
||||
Changes between 0.9.6 and 0.9.6a [xx XXX 2000]
|
||||
|
||||
*) Store verify_result within SSL_SESSION also for client side to
|
||||
avoid potential security hole. (Re-used sessions on the client side
|
||||
always resulted in verify_result==X509_V_OK, not using the original
|
||||
result of the server certificate verification.)
|
||||
[Lutz Jaenicke]
|
||||
|
||||
*) Disable ssl2_peek and ssl3_peek (i.e., both implementations
|
||||
of SSL_peek) because they both are completely broken.
|
||||
They will be fixed RSN by adding an additional 'peek' parameter
|
||||
|
|
|
@ -921,6 +921,7 @@ int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data)
|
|||
goto err;
|
||||
}
|
||||
ERR_clear_error(); /* but we keep s->verify_result */
|
||||
s->session->verify_result = s->verify_result;
|
||||
|
||||
/* server's cert for this session */
|
||||
sc=ssl_sess_cert_new();
|
||||
|
|
|
@ -815,6 +815,7 @@ static int ssl3_get_server_certificate(SSL *s)
|
|||
X509_free(s->session->peer);
|
||||
CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509);
|
||||
s->session->peer=x;
|
||||
s->session->verify_result = s->verify_result;
|
||||
|
||||
x=NULL;
|
||||
ret=1;
|
||||
|
|
|
@ -508,6 +508,7 @@ int SSL_set_session(SSL *s, SSL_SESSION *session)
|
|||
if (s->session != NULL)
|
||||
SSL_SESSION_free(s->session);
|
||||
s->session=session;
|
||||
s->verify_result = s->session->verify_result;
|
||||
/* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/
|
||||
ret=1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue