summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkus <>2002-09-23 21:32:28 +0000
committermarkus <>2002-09-23 21:32:28 +0000
commitf31910c44fa57c65521a215e1404058a14bb8fd2 (patch)
treeec82598741316cec7701f58e4e153564b97f215b
parentb8476376aa93d01a90c88ac2718a3516cf9a7222 (diff)
downloadopenbsd-f31910c44fa57c65521a215e1404058a14bb8fd2.tar.gz
openbsd-f31910c44fa57c65521a215e1404058a14bb8fd2.tar.bz2
openbsd-f31910c44fa57c65521a215e1404058a14bb8fd2.zip
pull in fix from openssl-0.9.7-stable-SNAP-20020921:
*) Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes). [Bodo Moeller]
-rw-r--r--src/lib/libssl/s3_clnt.c21
-rw-r--r--src/lib/libssl/src/ssl/s3_clnt.c21
2 files changed, 10 insertions, 32 deletions
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c
index 9ce5373b51..7da9363ef5 100644
--- a/src/lib/libssl/s3_clnt.c
+++ b/src/lib/libssl/s3_clnt.c
@@ -631,23 +631,11 @@ static int ssl3_get_server_hello(SSL *s)
631 /* get the session-id */ 631 /* get the session-id */
632 j= *(p++); 632 j= *(p++);
633 633
634 if(j > sizeof s->session->session_id) 634 if ((j > sizeof s->session->session_id) || (j > SSL3_SESSION_ID_SIZE))
635 {
636 al=SSL_AD_ILLEGAL_PARAMETER;
637 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,
638 SSL_R_SSL3_SESSION_ID_TOO_LONG);
639 goto f_err;
640 }
641
642 if ((j != 0) && (j != SSL3_SESSION_ID_SIZE))
643 { 635 {
644 /* SSLref returns 16 :-( */ 636 al=SSL_AD_ILLEGAL_PARAMETER;
645 if (j < SSL2_SSL_SESSION_ID_LENGTH) 637 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_SSL3_SESSION_ID_TOO_LONG);
646 { 638 goto f_err;
647 al=SSL_AD_ILLEGAL_PARAMETER;
648 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_SSL3_SESSION_ID_TOO_SHORT);
649 goto f_err;
650 }
651 } 639 }
652 if (j != 0 && j == s->session->session_id_length 640 if (j != 0 && j == s->session->session_id_length
653 && memcmp(p,s->session->session_id,j) == 0) 641 && memcmp(p,s->session->session_id,j) == 0)
@@ -655,6 +643,7 @@ static int ssl3_get_server_hello(SSL *s)
655 if(s->sid_ctx_length != s->session->sid_ctx_length 643 if(s->sid_ctx_length != s->session->sid_ctx_length
656 || memcmp(s->session->sid_ctx,s->sid_ctx,s->sid_ctx_length)) 644 || memcmp(s->session->sid_ctx,s->sid_ctx,s->sid_ctx_length))
657 { 645 {
646 /* actually a client application bug */
658 al=SSL_AD_ILLEGAL_PARAMETER; 647 al=SSL_AD_ILLEGAL_PARAMETER;
659 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT); 648 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT);
660 goto f_err; 649 goto f_err;
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c
index 9ce5373b51..7da9363ef5 100644
--- a/src/lib/libssl/src/ssl/s3_clnt.c
+++ b/src/lib/libssl/src/ssl/s3_clnt.c
@@ -631,23 +631,11 @@ static int ssl3_get_server_hello(SSL *s)
631 /* get the session-id */ 631 /* get the session-id */
632 j= *(p++); 632 j= *(p++);
633 633
634 if(j > sizeof s->session->session_id) 634 if ((j > sizeof s->session->session_id) || (j > SSL3_SESSION_ID_SIZE))
635 {
636 al=SSL_AD_ILLEGAL_PARAMETER;
637 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,
638 SSL_R_SSL3_SESSION_ID_TOO_LONG);
639 goto f_err;
640 }
641
642 if ((j != 0) && (j != SSL3_SESSION_ID_SIZE))
643 { 635 {
644 /* SSLref returns 16 :-( */ 636 al=SSL_AD_ILLEGAL_PARAMETER;
645 if (j < SSL2_SSL_SESSION_ID_LENGTH) 637 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_SSL3_SESSION_ID_TOO_LONG);
646 { 638 goto f_err;
647 al=SSL_AD_ILLEGAL_PARAMETER;
648 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_SSL3_SESSION_ID_TOO_SHORT);
649 goto f_err;
650 }
651 } 639 }
652 if (j != 0 && j == s->session->session_id_length 640 if (j != 0 && j == s->session->session_id_length
653 && memcmp(p,s->session->session_id,j) == 0) 641 && memcmp(p,s->session->session_id,j) == 0)
@@ -655,6 +643,7 @@ static int ssl3_get_server_hello(SSL *s)
655 if(s->sid_ctx_length != s->session->sid_ctx_length 643 if(s->sid_ctx_length != s->session->sid_ctx_length
656 || memcmp(s->session->sid_ctx,s->sid_ctx,s->sid_ctx_length)) 644 || memcmp(s->session->sid_ctx,s->sid_ctx,s->sid_ctx_length))
657 { 645 {
646 /* actually a client application bug */
658 al=SSL_AD_ILLEGAL_PARAMETER; 647 al=SSL_AD_ILLEGAL_PARAMETER;
659 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT); 648 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT);
660 goto f_err; 649 goto f_err;