diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/s23_srvr.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/libssl/s23_srvr.c b/src/lib/libssl/s23_srvr.c index 8743b61cbb..c5404ca0bc 100644 --- a/src/lib/libssl/s23_srvr.c +++ b/src/lib/libssl/s23_srvr.c | |||
| @@ -139,11 +139,18 @@ SSL_METHOD *SSLv23_server_method(void) | |||
| 139 | 139 | ||
| 140 | if (init) | 140 | if (init) |
| 141 | { | 141 | { |
| 142 | memcpy((char *)&SSLv23_server_data, | 142 | CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); |
| 143 | (char *)sslv23_base_method(),sizeof(SSL_METHOD)); | 143 | |
| 144 | SSLv23_server_data.ssl_accept=ssl23_accept; | 144 | if (init) |
| 145 | SSLv23_server_data.get_ssl_method=ssl23_get_server_method; | 145 | { |
| 146 | init=0; | 146 | memcpy((char *)&SSLv23_server_data, |
| 147 | (char *)sslv23_base_method(),sizeof(SSL_METHOD)); | ||
| 148 | SSLv23_server_data.ssl_accept=ssl23_accept; | ||
| 149 | SSLv23_server_data.get_ssl_method=ssl23_get_server_method; | ||
| 150 | init=0; | ||
| 151 | } | ||
| 152 | |||
| 153 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); | ||
| 147 | } | 154 | } |
| 148 | return(&SSLv23_server_data); | 155 | return(&SSLv23_server_data); |
| 149 | } | 156 | } |
| @@ -505,7 +512,7 @@ int ssl23_get_client_hello(SSL *s) | |||
| 505 | 512 | ||
| 506 | if (s->s3 != NULL) ssl3_free(s); | 513 | if (s->s3 != NULL) ssl3_free(s); |
| 507 | 514 | ||
| 508 | if (!BUF_MEM_grow(s->init_buf, | 515 | if (!BUF_MEM_grow_clean(s->init_buf, |
| 509 | SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER)) | 516 | SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER)) |
| 510 | { | 517 | { |
| 511 | goto err; | 518 | goto err; |
