diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/s23_clnt.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c index 299d2ae5d2..aaedf6a9bb 100644 --- a/src/lib/libssl/s23_clnt.c +++ b/src/lib/libssl/s23_clnt.c | |||
| @@ -68,8 +68,10 @@ static int ssl23_client_hello(SSL *s); | |||
| 68 | static int ssl23_get_server_hello(SSL *s); | 68 | static int ssl23_get_server_hello(SSL *s); |
| 69 | static SSL_METHOD *ssl23_get_client_method(int ver) | 69 | static SSL_METHOD *ssl23_get_client_method(int ver) |
| 70 | { | 70 | { |
| 71 | #ifndef NO_SSL2 | ||
| 71 | if (ver == SSL2_VERSION) | 72 | if (ver == SSL2_VERSION) |
| 72 | return(SSLv2_client_method()); | 73 | return(SSLv2_client_method()); |
| 74 | #endif | ||
| 73 | if (ver == SSL3_VERSION) | 75 | if (ver == SSL3_VERSION) |
| 74 | return(SSLv3_client_method()); | 76 | return(SSLv3_client_method()); |
| 75 | else if (ver == TLS1_VERSION) | 77 | else if (ver == TLS1_VERSION) |
| @@ -102,7 +104,7 @@ int ssl23_connect(SSL *s) | |||
| 102 | int ret= -1; | 104 | int ret= -1; |
| 103 | int new_state,state; | 105 | int new_state,state; |
| 104 | 106 | ||
| 105 | RAND_seed(&Time,sizeof(Time)); | 107 | RAND_add(&Time,sizeof(Time),0); |
| 106 | ERR_clear_error(); | 108 | ERR_clear_error(); |
| 107 | clear_sys_error(); | 109 | clear_sys_error(); |
| 108 | 110 | ||
| @@ -222,7 +224,7 @@ static int ssl23_client_hello(SSL *s) | |||
| 222 | #endif | 224 | #endif |
| 223 | 225 | ||
| 224 | p=s->s3->client_random; | 226 | p=s->s3->client_random; |
| 225 | RAND_bytes(p,SSL3_RANDOM_SIZE); | 227 | RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE); |
| 226 | 228 | ||
| 227 | /* Do the message type and length last */ | 229 | /* Do the message type and length last */ |
| 228 | d= &(buf[2]); | 230 | d= &(buf[2]); |
| @@ -283,7 +285,7 @@ static int ssl23_client_hello(SSL *s) | |||
| 283 | i=ch_len; | 285 | i=ch_len; |
| 284 | s2n(i,d); | 286 | s2n(i,d); |
| 285 | memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE); | 287 | memset(&(s->s3->client_random[0]),0,SSL3_RANDOM_SIZE); |
| 286 | RAND_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i); | 288 | RAND_pseudo_bytes(&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i); |
| 287 | memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i); | 289 | memcpy(p,&(s->s3->client_random[SSL3_RANDOM_SIZE-i]),i); |
| 288 | p+=i; | 290 | p+=i; |
| 289 | 291 | ||
| @@ -307,7 +309,7 @@ static int ssl23_get_server_hello(SSL *s) | |||
| 307 | { | 309 | { |
| 308 | char buf[8]; | 310 | char buf[8]; |
| 309 | unsigned char *p; | 311 | unsigned char *p; |
| 310 | int i,ch_len; | 312 | int i; |
| 311 | int n; | 313 | int n; |
| 312 | 314 | ||
| 313 | n=ssl23_read_bytes(s,7); | 315 | n=ssl23_read_bytes(s,7); |
| @@ -320,9 +322,14 @@ static int ssl23_get_server_hello(SSL *s) | |||
| 320 | if ((p[0] & 0x80) && (p[2] == SSL2_MT_SERVER_HELLO) && | 322 | if ((p[0] & 0x80) && (p[2] == SSL2_MT_SERVER_HELLO) && |
| 321 | (p[5] == 0x00) && (p[6] == 0x02)) | 323 | (p[5] == 0x00) && (p[6] == 0x02)) |
| 322 | { | 324 | { |
| 325 | #ifdef NO_SSL2 | ||
| 326 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL); | ||
| 327 | goto err; | ||
| 328 | #else | ||
| 323 | /* we are talking sslv2 */ | 329 | /* we are talking sslv2 */ |
| 324 | /* we need to clean up the SSLv3 setup and put in the | 330 | /* we need to clean up the SSLv3 setup and put in the |
| 325 | * sslv2 stuff. */ | 331 | * sslv2 stuff. */ |
| 332 | int ch_len; | ||
| 326 | 333 | ||
| 327 | if (s->options & SSL_OP_NO_SSLv2) | 334 | if (s->options & SSL_OP_NO_SSLv2) |
| 328 | { | 335 | { |
| @@ -375,6 +382,7 @@ static int ssl23_get_server_hello(SSL *s) | |||
| 375 | 382 | ||
| 376 | s->method=SSLv2_client_method(); | 383 | s->method=SSLv2_client_method(); |
| 377 | s->handshake_func=s->method->ssl_connect; | 384 | s->handshake_func=s->method->ssl_connect; |
| 385 | #endif | ||
| 378 | } | 386 | } |
| 379 | else if ((p[0] == SSL3_RT_HANDSHAKE) && | 387 | else if ((p[0] == SSL3_RT_HANDSHAKE) && |
| 380 | (p[1] == SSL3_VERSION_MAJOR) && | 388 | (p[1] == SSL3_VERSION_MAJOR) && |
