提交 0dd2254d 编写于 作者: L Lutz Jänicke

Store verify_result with sessions to avoid potential security hole.

For the server side this was already done one year ago :-(
上级 03a08489
...@@ -921,6 +921,7 @@ int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data) ...@@ -921,6 +921,7 @@ int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data)
goto err; goto err;
} }
ERR_clear_error(); /* but we keep s->verify_result */ ERR_clear_error(); /* but we keep s->verify_result */
s->session->verify_result = s->verify_result;
/* server's cert for this session */ /* server's cert for this session */
sc=ssl_sess_cert_new(); sc=ssl_sess_cert_new();
......
...@@ -815,6 +815,7 @@ static int ssl3_get_server_certificate(SSL *s) ...@@ -815,6 +815,7 @@ static int ssl3_get_server_certificate(SSL *s)
X509_free(s->session->peer); X509_free(s->session->peer);
CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509); CRYPTO_add(&x->references,1,CRYPTO_LOCK_X509);
s->session->peer=x; s->session->peer=x;
s->session->verify_result = s->verify_result;
x=NULL; x=NULL;
ret=1; ret=1;
......
...@@ -508,6 +508,7 @@ int SSL_set_session(SSL *s, SSL_SESSION *session) ...@@ -508,6 +508,7 @@ int SSL_set_session(SSL *s, SSL_SESSION *session)
if (s->session != NULL) if (s->session != NULL)
SSL_SESSION_free(s->session); SSL_SESSION_free(s->session);
s->session=session; s->session=session;
s->verify_result = s->session->verify_result;
/* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/ /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL);*/
ret=1; ret=1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册