summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s23_srvr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/s23_srvr.c')
-rw-r--r--src/lib/libssl/s23_srvr.c19
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;