diff options
Diffstat (limited to 'src/lib/libssl/s3_clnt.c')
-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 :-( */ |