diff options
author | Colin Percival <cperciva@FreeBSD.org> | 2006-09-28 13:06:23 +0000 |
---|---|---|
committer | Colin Percival <cperciva@FreeBSD.org> | 2006-09-28 13:06:23 +0000 |
commit | 30a6ffb3330a4ce39d12906a7dda5c4d9ed91dc3 (patch) | |
tree | dd781c2038cbc6db2809f44aae4144784fa53814 /crypto/openssl/ssl | |
parent | b55396780782c474e291f8557a14c033f4c6941d (diff) | |
download | src-30a6ffb3330a4ce39d12906a7dda5c4d9ed91dc3.tar.gz src-30a6ffb3330a4ce39d12906a7dda5c4d9ed91dc3.zip |
Correct multiple vulnerabilities in crypto(3).
Limit the size of public keys used in order to protect applications
from a denial of service via insane key sizes.
Security: FreeBSD-SA-06:23.openssl
Approved by: so (cperciva)
Notes
Notes:
svn path=/releng/4.11/; revision=162724
Diffstat (limited to 'crypto/openssl/ssl')
-rw-r--r-- | crypto/openssl/ssl/s2_clnt.c | 3 | ||||
-rw-r--r-- | crypto/openssl/ssl/s3_srvr.c | 2 | ||||
-rw-r--r-- | crypto/openssl/ssl/ssl_lib.c | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/crypto/openssl/ssl/s2_clnt.c b/crypto/openssl/ssl/s2_clnt.c index 43b32eb4159f..38f29c5c3ad9 100644 --- a/crypto/openssl/ssl/s2_clnt.c +++ b/crypto/openssl/ssl/s2_clnt.c @@ -538,7 +538,8 @@ static int get_server_hello(SSL *s) CRYPTO_add(&s->session->peer->references, 1, CRYPTO_LOCK_X509); } - if (s->session->peer != s->session->sess_cert->peer_key->x509) + if (s->session->sess_cert == NULL + || s->session->peer != s->session->sess_cert->peer_key->x509) /* can't happen */ { ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR); diff --git a/crypto/openssl/ssl/s3_srvr.c b/crypto/openssl/ssl/s3_srvr.c index deb3cffabeb5..1a261cc7bb8b 100644 --- a/crypto/openssl/ssl/s3_srvr.c +++ b/crypto/openssl/ssl/s3_srvr.c @@ -1722,7 +1722,7 @@ static int ssl3_get_client_key_exchange(SSL *s) if (kssl_ctx->client_princ) { - int len = strlen(kssl_ctx->client_princ); + size_t len = strlen(kssl_ctx->client_princ); if ( len < SSL_MAX_KRB5_PRINCIPAL_LENGTH ) { s->session->krb5_client_princ_len = len; diff --git a/crypto/openssl/ssl/ssl_lib.c b/crypto/openssl/ssl/ssl_lib.c index ee9a82d5860d..33e089dc0164 100644 --- a/crypto/openssl/ssl/ssl_lib.c +++ b/crypto/openssl/ssl/ssl_lib.c @@ -1166,7 +1166,7 @@ char *SSL_get_shared_ciphers(SSL *s,char *buf,int len) c=sk_SSL_CIPHER_value(sk,i); for (cp=c->name; *cp; ) { - if (len-- == 0) + if (len-- <= 0) { *p='\0'; return(buf); |