diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/s3_clnt.c | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index e5853ede95..b6be748932 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
| @@ -545,6 +545,7 @@ static int ssl3_client_hello(SSL *s) | |||
| 545 | *(p++)=i; | 545 | *(p++)=i; | 
| 546 | if (i != 0) | 546 | if (i != 0) | 
| 547 | { | 547 | { | 
| 548 | die(i <= sizeof s->session->session_id); | ||
| 548 | memcpy(p,s->session->session_id,i); | 549 | memcpy(p,s->session->session_id,i); | 
| 549 | p+=i; | 550 | p+=i; | 
| 550 | } | 551 | } | 
| @@ -626,6 +627,14 @@ static int ssl3_get_server_hello(SSL *s) | |||
| 626 | /* get the session-id */ | 627 | /* get the session-id */ | 
| 627 | j= *(p++); | 628 | j= *(p++); | 
| 628 | 629 | ||
| 630 | if(j > sizeof s->session->session_id) | ||
| 631 | { | ||
| 632 | al=SSL_AD_ILLEGAL_PARAMETER; | ||
| 633 | SSLerr(SSL_F_SSL3_GET_SERVER_HELLO, | ||
| 634 | SSL_R_SSL3_SESSION_ID_TOO_LONG); | ||
| 635 | goto f_err; | ||
| 636 | } | ||
| 637 | |||
| 629 | if ((j != 0) && (j != SSL3_SESSION_ID_SIZE)) | 638 | if ((j != 0) && (j != SSL3_SESSION_ID_SIZE)) | 
| 630 | { | 639 | { | 
| 631 | /* SSLref returns 16 :-( */ | 640 | /* SSLref returns 16 :-( */ | 
