diff options
author | markus <> | 2003-05-12 02:18:40 +0000 |
---|---|---|
committer | markus <> | 2003-05-12 02:18:40 +0000 |
commit | d4fcd82bb7f6d603bd61e19a81ba97337b89dfca (patch) | |
tree | d52e3a0f1f08f65ad283027e560e17ed0d720462 /src/lib/libssl/s3_srvr.c | |
parent | 582bbd139cd2afd58d10dc051c5b0b989b441074 (diff) | |
download | openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.tar.gz openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.tar.bz2 openbsd-d4fcd82bb7f6d603bd61e19a81ba97337b89dfca.zip |
merge 0.9.7b with local changes; crank majors for libssl/libcrypto
Diffstat (limited to 'src/lib/libssl/s3_srvr.c')
-rw-r--r-- | src/lib/libssl/s3_srvr.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c index a2c17f2950..cd7b88eeb5 100644 --- a/src/lib/libssl/s3_srvr.c +++ b/src/lib/libssl/s3_srvr.c | |||
@@ -153,11 +153,18 @@ SSL_METHOD *SSLv3_server_method(void) | |||
153 | 153 | ||
154 | if (init) | 154 | if (init) |
155 | { | 155 | { |
156 | memcpy((char *)&SSLv3_server_data,(char *)sslv3_base_method(), | 156 | CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); |
157 | sizeof(SSL_METHOD)); | 157 | |
158 | SSLv3_server_data.ssl_accept=ssl3_accept; | 158 | if (init) |
159 | SSLv3_server_data.get_ssl_method=ssl3_get_server_method; | 159 | { |
160 | init=0; | 160 | memcpy((char *)&SSLv3_server_data,(char *)sslv3_base_method(), |
161 | sizeof(SSL_METHOD)); | ||
162 | SSLv3_server_data.ssl_accept=ssl3_accept; | ||
163 | SSLv3_server_data.get_ssl_method=ssl3_get_server_method; | ||
164 | init=0; | ||
165 | } | ||
166 | |||
167 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); | ||
161 | } | 168 | } |
162 | return(&SSLv3_server_data); | 169 | return(&SSLv3_server_data); |
163 | } | 170 | } |
@@ -1172,7 +1179,7 @@ static int ssl3_send_server_key_exchange(SSL *s) | |||
1172 | kn=0; | 1179 | kn=0; |
1173 | } | 1180 | } |
1174 | 1181 | ||
1175 | if (!BUF_MEM_grow(buf,n+4+kn)) | 1182 | if (!BUF_MEM_grow_clean(buf,n+4+kn)) |
1176 | { | 1183 | { |
1177 | SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_LIB_BUF); | 1184 | SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,ERR_LIB_BUF); |
1178 | goto err; | 1185 | goto err; |
@@ -1299,7 +1306,7 @@ static int ssl3_send_certificate_request(SSL *s) | |||
1299 | { | 1306 | { |
1300 | name=sk_X509_NAME_value(sk,i); | 1307 | name=sk_X509_NAME_value(sk,i); |
1301 | j=i2d_X509_NAME(name,NULL); | 1308 | j=i2d_X509_NAME(name,NULL); |
1302 | if (!BUF_MEM_grow(buf,4+n+j+2)) | 1309 | if (!BUF_MEM_grow_clean(buf,4+n+j+2)) |
1303 | { | 1310 | { |
1304 | SSLerr(SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,ERR_R_BUF_LIB); | 1311 | SSLerr(SSL_F_SSL3_SEND_CERTIFICATE_REQUEST,ERR_R_BUF_LIB); |
1305 | goto err; | 1312 | goto err; |
@@ -1466,7 +1473,6 @@ static int ssl3_get_client_key_exchange(SSL *s) | |||
1466 | * made up by the adversary is properly formatted except | 1473 | * made up by the adversary is properly formatted except |
1467 | * that the version number is wrong. To avoid such attacks, | 1474 | * that the version number is wrong. To avoid such attacks, |
1468 | * we should treat this just like any other decryption error. */ | 1475 | * we should treat this just like any other decryption error. */ |
1469 | p[0] = (char)(int) "CAN-2003-0131 patch 2003-03-20"; | ||
1470 | } | 1476 | } |
1471 | } | 1477 | } |
1472 | 1478 | ||
@@ -1486,7 +1492,7 @@ static int ssl3_get_client_key_exchange(SSL *s) | |||
1486 | s->method->ssl3_enc->generate_master_secret(s, | 1492 | s->method->ssl3_enc->generate_master_secret(s, |
1487 | s->session->master_key, | 1493 | s->session->master_key, |
1488 | p,i); | 1494 | p,i); |
1489 | memset(p,0,i); | 1495 | OPENSSL_cleanse(p,i); |
1490 | } | 1496 | } |
1491 | else | 1497 | else |
1492 | #endif | 1498 | #endif |
@@ -1549,7 +1555,7 @@ static int ssl3_get_client_key_exchange(SSL *s) | |||
1549 | s->session->master_key_length= | 1555 | s->session->master_key_length= |
1550 | s->method->ssl3_enc->generate_master_secret(s, | 1556 | s->method->ssl3_enc->generate_master_secret(s, |
1551 | s->session->master_key,p,i); | 1557 | s->session->master_key,p,i); |
1552 | memset(p,0,i); | 1558 | OPENSSL_cleanse(p,i); |
1553 | } | 1559 | } |
1554 | else | 1560 | else |
1555 | #endif | 1561 | #endif |
@@ -1652,7 +1658,7 @@ static int ssl3_get_client_key_exchange(SSL *s) | |||
1652 | if (enc == NULL) | 1658 | if (enc == NULL) |
1653 | goto err; | 1659 | goto err; |
1654 | 1660 | ||
1655 | memset(iv, 0, EVP_MAX_IV_LENGTH); /* per RFC 1510 */ | 1661 | memset(iv, 0, sizeof iv); /* per RFC 1510 */ |
1656 | 1662 | ||
1657 | if (!EVP_DecryptInit_ex(&ciph_ctx,enc,NULL,kssl_ctx->key,iv)) | 1663 | if (!EVP_DecryptInit_ex(&ciph_ctx,enc,NULL,kssl_ctx->key,iv)) |
1658 | { | 1664 | { |
@@ -1740,7 +1746,7 @@ static int ssl3_get_cert_verify(SSL *s) | |||
1740 | SSL3_ST_SR_CERT_VRFY_A, | 1746 | SSL3_ST_SR_CERT_VRFY_A, |
1741 | SSL3_ST_SR_CERT_VRFY_B, | 1747 | SSL3_ST_SR_CERT_VRFY_B, |
1742 | -1, | 1748 | -1, |
1743 | 512, /* 512? */ | 1749 | 514, /* 514? */ |
1744 | &ok); | 1750 | &ok); |
1745 | 1751 | ||
1746 | if (!ok) return((int)n); | 1752 | if (!ok) return((int)n); |