fix support for receiving fragmented handshake messages
This commit is contained in:
parent
73b979e601
commit
1e24b3a09e
30
CHANGES
30
CHANGES
@ -4,11 +4,6 @@
|
|||||||
|
|
||||||
Changes between 0.9.8e and 0.9.9 [xx XXX xxxx]
|
Changes between 0.9.8e and 0.9.9 [xx XXX xxxx]
|
||||||
|
|
||||||
*) Load error codes if they are not already present instead of using a
|
|
||||||
static variable. This allows them to be cleanly unloaded and reloaded.
|
|
||||||
Improve header file function name parsing.
|
|
||||||
[Steve Henson]
|
|
||||||
|
|
||||||
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
*) Initial incomplete changes to avoid need for function casts in OpenSSL
|
||||||
when OPENSSL_NO_FCAST is set: some compilers (gcc 4.2 and later) reject
|
when OPENSSL_NO_FCAST is set: some compilers (gcc 4.2 and later) reject
|
||||||
their use. Safestack is reimplemented using inline functions: tests show
|
their use. Safestack is reimplemented using inline functions: tests show
|
||||||
@ -423,9 +418,21 @@
|
|||||||
|
|
||||||
Changes between 0.9.8d and 0.9.8e [XX xxx XXXX]
|
Changes between 0.9.8d and 0.9.8e [XX xxx XXXX]
|
||||||
|
|
||||||
|
*) Have SSL/TLS server implementation tolerate "mismatched" record
|
||||||
|
protocol version while receiving ClientHello even if the
|
||||||
|
ClientHello is fragmented. (The server can't insist on the
|
||||||
|
particular protocol version it has chosen before the ServerHello
|
||||||
|
message has informed the client about his choice.)
|
||||||
|
[Bodo Moeller]
|
||||||
|
|
||||||
*) Add RFC 3779 support.
|
*) Add RFC 3779 support.
|
||||||
[Rob Austein for ARIN, Ben Laurie]
|
[Rob Austein for ARIN, Ben Laurie]
|
||||||
|
|
||||||
|
*) Load error codes if they are not already present instead of using a
|
||||||
|
static variable. This allows them to be cleanly unloaded and reloaded.
|
||||||
|
Improve header file function name parsing.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
Changes between 0.9.8c and 0.9.8d [28 Sep 2006]
|
Changes between 0.9.8c and 0.9.8d [28 Sep 2006]
|
||||||
|
|
||||||
*) Introduce limits to prevent malicious keys being able to
|
*) Introduce limits to prevent malicious keys being able to
|
||||||
@ -1430,6 +1437,19 @@
|
|||||||
differing sizes.
|
differing sizes.
|
||||||
[Richard Levitte]
|
[Richard Levitte]
|
||||||
|
|
||||||
|
Changes between 0.9.7l and 0.9.7m [xx XXX xxxx]
|
||||||
|
|
||||||
|
*) Have SSL/TLS server implementation tolerate "mismatched" record
|
||||||
|
protocol version while receiving ClientHello even if the
|
||||||
|
ClientHello is fragmented. (The server can't insist on the
|
||||||
|
particular protocol version it has chosen before the ServerHello
|
||||||
|
message has informed the client about his choice.)
|
||||||
|
[Bodo Moeller]
|
||||||
|
|
||||||
|
*) Load error codes if they are not already present instead of using a
|
||||||
|
static variable. This allows them to be cleanly unloaded and reloaded.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
Changes between 0.9.7k and 0.9.7l [28 Sep 2006]
|
Changes between 0.9.7k and 0.9.7l [28 Sep 2006]
|
||||||
|
|
||||||
*) Introduce limits to prevent malicious keys being able to
|
*) Introduce limits to prevent malicious keys being able to
|
||||||
|
@ -573,11 +573,7 @@ again:
|
|||||||
n2s(p,rr->length);
|
n2s(p,rr->length);
|
||||||
|
|
||||||
/* Lets check version */
|
/* Lets check version */
|
||||||
if (s->first_packet)
|
if (!s->first_packet)
|
||||||
{
|
|
||||||
s->first_packet=0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (version != s->version)
|
if (version != s->version)
|
||||||
{
|
{
|
||||||
|
@ -638,7 +638,6 @@ static int ssl23_get_server_hello(SSL *s)
|
|||||||
if (!ssl_get_new_session(s,0))
|
if (!ssl_get_new_session(s,0))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
s->first_packet=1;
|
|
||||||
return(SSL_connect(s));
|
return(SSL_connect(s));
|
||||||
err:
|
err:
|
||||||
return(-1);
|
return(-1);
|
||||||
|
@ -576,7 +576,6 @@ int ssl23_get_client_hello(SSL *s)
|
|||||||
s->init_num=0;
|
s->init_num=0;
|
||||||
|
|
||||||
if (buf != buf_space) OPENSSL_free(buf);
|
if (buf != buf_space) OPENSSL_free(buf);
|
||||||
s->first_packet=1;
|
|
||||||
return(SSL_accept(s));
|
return(SSL_accept(s));
|
||||||
err:
|
err:
|
||||||
if (buf != buf_space) OPENSSL_free(buf);
|
if (buf != buf_space) OPENSSL_free(buf);
|
||||||
|
@ -307,11 +307,7 @@ fprintf(stderr, "Record type=%d, Length=%d\n", rr->type, rr->length);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Lets check version */
|
/* Lets check version */
|
||||||
if (s->first_packet)
|
if (!s->first_packet)
|
||||||
{
|
|
||||||
s->first_packet=0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (version != s->version)
|
if (version != s->version)
|
||||||
{
|
{
|
||||||
|
@ -715,9 +715,9 @@ int ssl3_get_client_hello(SSL *s)
|
|||||||
*/
|
*/
|
||||||
if (s->state == SSL3_ST_SR_CLNT_HELLO_A)
|
if (s->state == SSL3_ST_SR_CLNT_HELLO_A)
|
||||||
{
|
{
|
||||||
s->first_packet=1;
|
|
||||||
s->state=SSL3_ST_SR_CLNT_HELLO_B;
|
s->state=SSL3_ST_SR_CLNT_HELLO_B;
|
||||||
}
|
}
|
||||||
|
s->first_packet=1;
|
||||||
n=s->method->ssl_get_message(s,
|
n=s->method->ssl_get_message(s,
|
||||||
SSL3_ST_SR_CLNT_HELLO_B,
|
SSL3_ST_SR_CLNT_HELLO_B,
|
||||||
SSL3_ST_SR_CLNT_HELLO_C,
|
SSL3_ST_SR_CLNT_HELLO_C,
|
||||||
@ -726,6 +726,7 @@ int ssl3_get_client_hello(SSL *s)
|
|||||||
&ok);
|
&ok);
|
||||||
|
|
||||||
if (!ok) return((int)n);
|
if (!ok) return((int)n);
|
||||||
|
s->first_packet=0;
|
||||||
d=p=(unsigned char *)s->init_msg;
|
d=p=(unsigned char *)s->init_msg;
|
||||||
|
|
||||||
/* use version from inside client hello, not from record header
|
/* use version from inside client hello, not from record header
|
||||||
|
Loading…
x
Reference in New Issue
Block a user