svn commit: r249029 - in releng: 8.3 8.3/crypto/openssl 8.3/crypto/openssl/apps 8.3/crypto/openssl/crypto 8.3/crypto/openssl/crypto/asn1 8.3/crypto/openssl/crypto/bio 8.3/crypto/openssl/crypto/bn 8...
Xin LI
delphij at FreeBSD.org
Tue Apr 2 17:34:49 UTC 2013
Author: delphij
Date: Tue Apr 2 17:34:42 2013
New Revision: 249029
URL: http://svnweb.freebsd.org/changeset/base/249029
Log:
Fix OpenSSL multiple vulnerabilities. [13:03]
Fix BIND remote denial of service. [13:04]
Security: CVE-2013-0166, CVE-2013-0169
Security: FreeBSD-SA-13:03.openssl
Security: CVE-2013-2266
Security: FreeBSD-SA-13:04.bind
Approved by: so
Added:
releng/8.3/crypto/openssl/ssl/s3_cbc.c
releng/9.0/crypto/openssl/ssl/s3_cbc.c
releng/9.1/crypto/openssl/ssl/s3_cbc.c
Modified:
releng/8.3/UPDATING
releng/8.3/crypto/openssl/CHANGES
releng/8.3/crypto/openssl/Configure
releng/8.3/crypto/openssl/FAQ
releng/8.3/crypto/openssl/LICENSE
releng/8.3/crypto/openssl/Makefile
releng/8.3/crypto/openssl/NEWS
releng/8.3/crypto/openssl/README
releng/8.3/crypto/openssl/apps/apps.c
releng/8.3/crypto/openssl/apps/asn1pars.c
releng/8.3/crypto/openssl/apps/cms.c
releng/8.3/crypto/openssl/apps/dhparam.c
releng/8.3/crypto/openssl/apps/openssl.cnf
releng/8.3/crypto/openssl/apps/pkcs12.c
releng/8.3/crypto/openssl/apps/s_client.c
releng/8.3/crypto/openssl/apps/s_server.c
releng/8.3/crypto/openssl/apps/x509.c
releng/8.3/crypto/openssl/config
releng/8.3/crypto/openssl/crypto/asn1/a_object.c
releng/8.3/crypto/openssl/crypto/asn1/a_strex.c
releng/8.3/crypto/openssl/crypto/asn1/a_strnid.c
releng/8.3/crypto/openssl/crypto/asn1/a_verify.c
releng/8.3/crypto/openssl/crypto/asn1/asn1.h
releng/8.3/crypto/openssl/crypto/asn1/asn_mime.c
releng/8.3/crypto/openssl/crypto/asn1/x_name.c
releng/8.3/crypto/openssl/crypto/asn1/x_pubkey.c
releng/8.3/crypto/openssl/crypto/bio/bf_buff.c
releng/8.3/crypto/openssl/crypto/bio/bio.h
releng/8.3/crypto/openssl/crypto/bio/bss_dgram.c
releng/8.3/crypto/openssl/crypto/bn/asm/mo-586.pl
releng/8.3/crypto/openssl/crypto/bn/asm/ppc.pl
releng/8.3/crypto/openssl/crypto/bn/bn_blind.c
releng/8.3/crypto/openssl/crypto/bn/bn_gf2m.c
releng/8.3/crypto/openssl/crypto/bn/bn_word.c
releng/8.3/crypto/openssl/crypto/cms/cms.h
releng/8.3/crypto/openssl/crypto/cms/cms_enc.c
releng/8.3/crypto/openssl/crypto/cms/cms_env.c
releng/8.3/crypto/openssl/crypto/cms/cms_io.c
releng/8.3/crypto/openssl/crypto/cms/cms_lcl.h
releng/8.3/crypto/openssl/crypto/cms/cms_smime.c
releng/8.3/crypto/openssl/crypto/comp/c_rle.c
releng/8.3/crypto/openssl/crypto/conf/conf_api.c
releng/8.3/crypto/openssl/crypto/cryptlib.c
releng/8.3/crypto/openssl/crypto/crypto.h
releng/8.3/crypto/openssl/crypto/ec/ec2_smpl.c
releng/8.3/crypto/openssl/crypto/ec/ec_key.c
releng/8.3/crypto/openssl/crypto/ec/ecp_smpl.c
releng/8.3/crypto/openssl/crypto/ecdsa/ecdsatest.c
releng/8.3/crypto/openssl/crypto/ecdsa/ecs_ossl.c
releng/8.3/crypto/openssl/crypto/evp/evp_test.c
releng/8.3/crypto/openssl/crypto/o_init.c
releng/8.3/crypto/openssl/crypto/ocsp/ocsp_lib.c
releng/8.3/crypto/openssl/crypto/ocsp/ocsp_vfy.c
releng/8.3/crypto/openssl/crypto/opensslv.h
releng/8.3/crypto/openssl/crypto/perlasm/cbc.pl
releng/8.3/crypto/openssl/crypto/pkcs7/pk7_smime.c
releng/8.3/crypto/openssl/crypto/rc4/asm/rc4-x86_64.pl
releng/8.3/crypto/openssl/crypto/rc4/rc4_skey.c
releng/8.3/crypto/openssl/crypto/rsa/rsa_eay.c
releng/8.3/crypto/openssl/crypto/rsa/rsa_oaep.c
releng/8.3/crypto/openssl/crypto/symhacks.h
releng/8.3/crypto/openssl/crypto/x509/x509_vfy.c
releng/8.3/crypto/openssl/crypto/x509v3/v3_addr.c
releng/8.3/crypto/openssl/crypto/x509v3/v3_asid.c
releng/8.3/crypto/openssl/doc/HOWTO/proxy_certificates.txt
releng/8.3/crypto/openssl/doc/apps/CA.pl.pod
releng/8.3/crypto/openssl/doc/apps/ca.pod
releng/8.3/crypto/openssl/doc/apps/dgst.pod
releng/8.3/crypto/openssl/doc/crypto/engine.pod
releng/8.3/crypto/openssl/doc/ssl/SSL_clear.pod
releng/8.3/crypto/openssl/engines/e_capi.c
releng/8.3/crypto/openssl/engines/e_capi_err.h
releng/8.3/crypto/openssl/fips/fips_canister.c
releng/8.3/crypto/openssl/openssl.spec
releng/8.3/crypto/openssl/ssl/Makefile
releng/8.3/crypto/openssl/ssl/bio_ssl.c
releng/8.3/crypto/openssl/ssl/d1_both.c
releng/8.3/crypto/openssl/ssl/d1_clnt.c
releng/8.3/crypto/openssl/ssl/d1_enc.c
releng/8.3/crypto/openssl/ssl/d1_lib.c
releng/8.3/crypto/openssl/ssl/d1_pkt.c
releng/8.3/crypto/openssl/ssl/d1_srvr.c
releng/8.3/crypto/openssl/ssl/s2_clnt.c
releng/8.3/crypto/openssl/ssl/s2_pkt.c
releng/8.3/crypto/openssl/ssl/s2_srvr.c
releng/8.3/crypto/openssl/ssl/s3_both.c
releng/8.3/crypto/openssl/ssl/s3_clnt.c
releng/8.3/crypto/openssl/ssl/s3_enc.c
releng/8.3/crypto/openssl/ssl/s3_lib.c
releng/8.3/crypto/openssl/ssl/s3_pkt.c
releng/8.3/crypto/openssl/ssl/s3_srvr.c
releng/8.3/crypto/openssl/ssl/ssl.h
releng/8.3/crypto/openssl/ssl/ssl_ciph.c
releng/8.3/crypto/openssl/ssl/ssl_err.c
releng/8.3/crypto/openssl/ssl/ssl_lib.c
releng/8.3/crypto/openssl/ssl/ssl_locl.h
releng/8.3/crypto/openssl/ssl/t1_enc.c
releng/8.3/crypto/openssl/ssl/t1_lib.c
releng/8.3/crypto/openssl/util/fipslink.pl
releng/8.3/crypto/openssl/util/libeay.num
releng/8.3/crypto/openssl/util/mkerr.pl
releng/8.3/crypto/openssl/util/pl/VC-32.pl
releng/8.3/secure/lib/libcrypto/Makefile.inc
releng/8.3/secure/lib/libssl/Makefile
releng/8.3/sys/conf/newvers.sh
releng/9.0/UPDATING
releng/9.0/crypto/openssl/CHANGES
releng/9.0/crypto/openssl/Configure
releng/9.0/crypto/openssl/FAQ
releng/9.0/crypto/openssl/LICENSE
releng/9.0/crypto/openssl/Makefile
releng/9.0/crypto/openssl/NEWS
releng/9.0/crypto/openssl/README
releng/9.0/crypto/openssl/apps/apps.c
releng/9.0/crypto/openssl/apps/asn1pars.c
releng/9.0/crypto/openssl/apps/cms.c
releng/9.0/crypto/openssl/apps/dhparam.c
releng/9.0/crypto/openssl/apps/openssl.cnf
releng/9.0/crypto/openssl/apps/pkcs12.c
releng/9.0/crypto/openssl/apps/s_client.c
releng/9.0/crypto/openssl/apps/s_server.c
releng/9.0/crypto/openssl/apps/x509.c
releng/9.0/crypto/openssl/config
releng/9.0/crypto/openssl/crypto/asn1/a_object.c
releng/9.0/crypto/openssl/crypto/asn1/a_strex.c
releng/9.0/crypto/openssl/crypto/asn1/a_strnid.c
releng/9.0/crypto/openssl/crypto/asn1/a_verify.c
releng/9.0/crypto/openssl/crypto/asn1/asn1.h
releng/9.0/crypto/openssl/crypto/asn1/asn_mime.c
releng/9.0/crypto/openssl/crypto/asn1/x_name.c
releng/9.0/crypto/openssl/crypto/asn1/x_pubkey.c
releng/9.0/crypto/openssl/crypto/bio/bf_buff.c
releng/9.0/crypto/openssl/crypto/bio/bio.h
releng/9.0/crypto/openssl/crypto/bio/bss_dgram.c
releng/9.0/crypto/openssl/crypto/bn/asm/mo-586.pl
releng/9.0/crypto/openssl/crypto/bn/asm/ppc.pl
releng/9.0/crypto/openssl/crypto/bn/bn_blind.c
releng/9.0/crypto/openssl/crypto/bn/bn_gf2m.c
releng/9.0/crypto/openssl/crypto/bn/bn_word.c
releng/9.0/crypto/openssl/crypto/cms/cms.h
releng/9.0/crypto/openssl/crypto/cms/cms_enc.c
releng/9.0/crypto/openssl/crypto/cms/cms_env.c
releng/9.0/crypto/openssl/crypto/cms/cms_io.c
releng/9.0/crypto/openssl/crypto/cms/cms_lcl.h
releng/9.0/crypto/openssl/crypto/cms/cms_smime.c
releng/9.0/crypto/openssl/crypto/comp/c_rle.c
releng/9.0/crypto/openssl/crypto/conf/conf_api.c
releng/9.0/crypto/openssl/crypto/cryptlib.c
releng/9.0/crypto/openssl/crypto/crypto.h
releng/9.0/crypto/openssl/crypto/ec/ec2_smpl.c
releng/9.0/crypto/openssl/crypto/ec/ec_key.c
releng/9.0/crypto/openssl/crypto/ec/ecp_smpl.c
releng/9.0/crypto/openssl/crypto/ecdsa/ecdsatest.c
releng/9.0/crypto/openssl/crypto/ecdsa/ecs_ossl.c
releng/9.0/crypto/openssl/crypto/evp/evp_test.c
releng/9.0/crypto/openssl/crypto/o_init.c
releng/9.0/crypto/openssl/crypto/ocsp/ocsp_lib.c
releng/9.0/crypto/openssl/crypto/ocsp/ocsp_vfy.c
releng/9.0/crypto/openssl/crypto/opensslv.h
releng/9.0/crypto/openssl/crypto/perlasm/cbc.pl
releng/9.0/crypto/openssl/crypto/pkcs7/pk7_smime.c
releng/9.0/crypto/openssl/crypto/rc4/asm/rc4-x86_64.pl
releng/9.0/crypto/openssl/crypto/rc4/rc4_skey.c
releng/9.0/crypto/openssl/crypto/rsa/rsa_eay.c
releng/9.0/crypto/openssl/crypto/rsa/rsa_oaep.c
releng/9.0/crypto/openssl/crypto/symhacks.h
releng/9.0/crypto/openssl/crypto/x509/x509_vfy.c
releng/9.0/crypto/openssl/crypto/x509v3/v3_addr.c
releng/9.0/crypto/openssl/crypto/x509v3/v3_asid.c
releng/9.0/crypto/openssl/doc/HOWTO/proxy_certificates.txt
releng/9.0/crypto/openssl/doc/apps/CA.pl.pod
releng/9.0/crypto/openssl/doc/apps/ca.pod
releng/9.0/crypto/openssl/doc/apps/dgst.pod
releng/9.0/crypto/openssl/doc/crypto/engine.pod
releng/9.0/crypto/openssl/doc/ssl/SSL_clear.pod
releng/9.0/crypto/openssl/engines/e_capi.c
releng/9.0/crypto/openssl/engines/e_capi_err.h
releng/9.0/crypto/openssl/fips/fips_canister.c
releng/9.0/crypto/openssl/openssl.spec
releng/9.0/crypto/openssl/ssl/Makefile
releng/9.0/crypto/openssl/ssl/bio_ssl.c
releng/9.0/crypto/openssl/ssl/d1_both.c
releng/9.0/crypto/openssl/ssl/d1_clnt.c
releng/9.0/crypto/openssl/ssl/d1_enc.c
releng/9.0/crypto/openssl/ssl/d1_lib.c
releng/9.0/crypto/openssl/ssl/d1_pkt.c
releng/9.0/crypto/openssl/ssl/d1_srvr.c
releng/9.0/crypto/openssl/ssl/s2_clnt.c
releng/9.0/crypto/openssl/ssl/s2_pkt.c
releng/9.0/crypto/openssl/ssl/s2_srvr.c
releng/9.0/crypto/openssl/ssl/s3_both.c
releng/9.0/crypto/openssl/ssl/s3_clnt.c
releng/9.0/crypto/openssl/ssl/s3_enc.c
releng/9.0/crypto/openssl/ssl/s3_lib.c
releng/9.0/crypto/openssl/ssl/s3_pkt.c
releng/9.0/crypto/openssl/ssl/s3_srvr.c
releng/9.0/crypto/openssl/ssl/ssl.h
releng/9.0/crypto/openssl/ssl/ssl_ciph.c
releng/9.0/crypto/openssl/ssl/ssl_err.c
releng/9.0/crypto/openssl/ssl/ssl_lib.c
releng/9.0/crypto/openssl/ssl/ssl_locl.h
releng/9.0/crypto/openssl/ssl/t1_enc.c
releng/9.0/crypto/openssl/ssl/t1_lib.c
releng/9.0/crypto/openssl/util/fipslink.pl
releng/9.0/crypto/openssl/util/libeay.num
releng/9.0/crypto/openssl/util/mkerr.pl
releng/9.0/crypto/openssl/util/pl/VC-32.pl
releng/9.0/lib/bind/config.h
releng/9.0/secure/lib/libcrypto/Makefile.inc
releng/9.0/secure/lib/libssl/Makefile
releng/9.0/sys/conf/newvers.sh
releng/9.1/UPDATING
releng/9.1/crypto/openssl/CHANGES
releng/9.1/crypto/openssl/Configure
releng/9.1/crypto/openssl/FAQ
releng/9.1/crypto/openssl/Makefile
releng/9.1/crypto/openssl/NEWS
releng/9.1/crypto/openssl/README
releng/9.1/crypto/openssl/apps/Makefile
releng/9.1/crypto/openssl/apps/apps.c
releng/9.1/crypto/openssl/apps/dhparam.c
releng/9.1/crypto/openssl/apps/s_server.c
releng/9.1/crypto/openssl/crypto/asn1/a_strex.c
releng/9.1/crypto/openssl/crypto/asn1/a_verify.c
releng/9.1/crypto/openssl/crypto/asn1/x_pubkey.c
releng/9.1/crypto/openssl/crypto/bn/bn_word.c
releng/9.1/crypto/openssl/crypto/cryptlib.c
releng/9.1/crypto/openssl/crypto/crypto.h
releng/9.1/crypto/openssl/crypto/o_init.c
releng/9.1/crypto/openssl/crypto/ocsp/ocsp_vfy.c
releng/9.1/crypto/openssl/crypto/opensslv.h
releng/9.1/crypto/openssl/crypto/rsa/rsa_oaep.c
releng/9.1/crypto/openssl/crypto/symhacks.h
releng/9.1/crypto/openssl/doc/apps/CA.pl.pod
releng/9.1/crypto/openssl/engines/e_capi.c
releng/9.1/crypto/openssl/openssl.spec
releng/9.1/crypto/openssl/ssl/Makefile
releng/9.1/crypto/openssl/ssl/d1_enc.c
releng/9.1/crypto/openssl/ssl/d1_pkt.c
releng/9.1/crypto/openssl/ssl/s2_clnt.c
releng/9.1/crypto/openssl/ssl/s2_pkt.c
releng/9.1/crypto/openssl/ssl/s3_both.c
releng/9.1/crypto/openssl/ssl/s3_clnt.c
releng/9.1/crypto/openssl/ssl/s3_enc.c
releng/9.1/crypto/openssl/ssl/s3_pkt.c
releng/9.1/crypto/openssl/ssl/s3_srvr.c
releng/9.1/crypto/openssl/ssl/ssl.h
releng/9.1/crypto/openssl/ssl/ssl_err.c
releng/9.1/crypto/openssl/ssl/ssl_lib.c
releng/9.1/crypto/openssl/ssl/ssl_locl.h
releng/9.1/crypto/openssl/ssl/t1_enc.c
releng/9.1/crypto/openssl/ssl/t1_lib.c
releng/9.1/crypto/openssl/util/libeay.num
releng/9.1/lib/bind/config.h
releng/9.1/secure/lib/libcrypto/Makefile.inc
releng/9.1/secure/lib/libssl/Makefile
releng/9.1/sys/conf/newvers.sh
Modified: releng/8.3/UPDATING
==============================================================================
--- releng/8.3/UPDATING Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/UPDATING Tue Apr 2 17:34:42 2013 (r249029)
@@ -15,6 +15,9 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
debugging tools present in HEAD were left in place because
sun4v support still needs work to become production ready.
+20130402: p7 FreeBSD-SA-13:03.openssl
+ Fix multiple vulnerabilities in OpenSSL.
+
20130218: p6 FreeBSD-SA-13:02.libc
Fix Denial of Service vulnerability in libc's glob(3) functionality.
Modified: releng/8.3/crypto/openssl/CHANGES
==============================================================================
--- releng/8.3/crypto/openssl/CHANGES Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/CHANGES Tue Apr 2 17:34:42 2013 (r249029)
@@ -2,6 +2,171 @@
OpenSSL CHANGES
_______________
+ Changes between 0.9.8x and 0.9.8y [5 Feb 2013]
+
+ *) Make the decoding of SSLv3, TLS and DTLS CBC records constant time.
+
+ This addresses the flaw in CBC record processing discovered by
+ Nadhem Alfardan and Kenny Paterson. Details of this attack can be found
+ at: http://www.isg.rhul.ac.uk/tls/
+
+ Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
+ Security Group at Royal Holloway, University of London
+ (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and
+ Emilia Käsper for the initial patch.
+ (CVE-2013-0169)
+ [Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson]
+
+ *) Return an error when checking OCSP signatures when key is NULL.
+ This fixes a DoS attack. (CVE-2013-0166)
+ [Steve Henson]
+
+ *) Call OCSP Stapling callback after ciphersuite has been chosen, so
+ the right response is stapled. Also change SSL_get_certificate()
+ so it returns the certificate actually sent.
+ See http://rt.openssl.org/Ticket/Display.html?id=2836.
+ (This is a backport)
+ [Rob Stradling <rob.stradling at comodo.com>]
+
+ *) Fix possible deadlock when decoding public keys.
+ [Steve Henson]
+
+ Changes between 0.9.8w and 0.9.8x [10 May 2012]
+
+ *) Sanity check record length before skipping explicit IV in DTLS
+ to fix DoS attack.
+
+ Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic
+ fuzzing as a service testing platform.
+ (CVE-2012-2333)
+ [Steve Henson]
+
+ *) Initialise tkeylen properly when encrypting CMS messages.
+ Thanks to Solar Designer of Openwall for reporting this issue.
+ [Steve Henson]
+
+ Changes between 0.9.8v and 0.9.8w [23 Apr 2012]
+
+ *) The fix for CVE-2012-2110 did not take into account that the
+ 'len' argument to BUF_MEM_grow and BUF_MEM_grow_clean is an
+ int in OpenSSL 0.9.8, making it still vulnerable. Fix by
+ rejecting negative len parameter. (CVE-2012-2131)
+ [Tomas Hoger <thoger at redhat.com>]
+
+ Changes between 0.9.8u and 0.9.8v [19 Apr 2012]
+
+ *) Check for potentially exploitable overflows in asn1_d2i_read_bio
+ BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer
+ in CRYPTO_realloc_clean.
+
+ Thanks to Tavis Ormandy, Google Security Team, for discovering this
+ issue and to Adam Langley <agl at chromium.org> for fixing it.
+ (CVE-2012-2110)
+ [Adam Langley (Google), Tavis Ormandy, Google Security Team]
+
+ Changes between 0.9.8t and 0.9.8u [12 Mar 2012]
+
+ *) Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness
+ in CMS and PKCS7 code. When RSA decryption fails use a random key for
+ content decryption and always return the same error. Note: this attack
+ needs on average 2^20 messages so it only affects automated senders. The
+ old behaviour can be reenabled in the CMS code by setting the
+ CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where
+ an MMA defence is not necessary.
+ Thanks to Ivan Nestlerode <inestlerode at us.ibm.com> for discovering
+ this issue. (CVE-2012-0884)
+ [Steve Henson]
+
+ *) Fix CVE-2011-4619: make sure we really are receiving a
+ client hello before rejecting multiple SGC restarts. Thanks to
+ Ivan Nestlerode <inestlerode at us.ibm.com> for discovering this bug.
+ [Steve Henson]
+
+ Changes between 0.9.8s and 0.9.8t [18 Jan 2012]
+
+ *) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109.
+ Thanks to Antonio Martin, Enterprise Secure Access Research and
+ Development, Cisco Systems, Inc. for discovering this bug and
+ preparing a fix. (CVE-2012-0050)
+ [Antonio Martin]
+
+ Changes between 0.9.8r and 0.9.8s [4 Jan 2012]
+
+ *) Nadhem Alfardan and Kenny Paterson have discovered an extension
+ of the Vaudenay padding oracle attack on CBC mode encryption
+ which enables an efficient plaintext recovery attack against
+ the OpenSSL implementation of DTLS. Their attack exploits timing
+ differences arising during decryption processing. A research
+ paper describing this attack can be found at:
+ http://www.isg.rhul.ac.uk/~kp/dtls.pdf
+ Thanks go to Nadhem Alfardan and Kenny Paterson of the Information
+ Security Group at Royal Holloway, University of London
+ (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann
+ <seggelmann at fh-muenster.de> and Michael Tuexen <tuexen at fh-muenster.de>
+ for preparing the fix. (CVE-2011-4108)
+ [Robin Seggelmann, Michael Tuexen]
+
+ *) Stop policy check failure freeing same buffer twice. (CVE-2011-4109)
+ [Ben Laurie, Kasper <ekasper at google.com>]
+
+ *) Clear bytes used for block padding of SSL 3.0 records.
+ (CVE-2011-4576)
+ [Adam Langley (Google)]
+
+ *) Only allow one SGC handshake restart for SSL/TLS. Thanks to George
+ Kadianakis <desnacked at gmail.com> for discovering this issue and
+ Adam Langley for preparing the fix. (CVE-2011-4619)
+ [Adam Langley (Google)]
+
+ *) Prevent malformed RFC3779 data triggering an assertion failure.
+ Thanks to Andrew Chi, BBN Technologies, for discovering the flaw
+ and Rob Austein <sra at hactrn.net> for fixing it. (CVE-2011-4577)
+ [Rob Austein <sra at hactrn.net>]
+
+ *) Fix ssl_ciph.c set-up race.
+ [Adam Langley (Google)]
+
+ *) Fix spurious failures in ecdsatest.c.
+ [Emilia Käsper (Google)]
+
+ *) Fix the BIO_f_buffer() implementation (which was mixing different
+ interpretations of the '..._len' fields).
+ [Adam Langley (Google)]
+
+ *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than
+ BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent
+ threads won't reuse the same blinding coefficients.
+
+ This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING
+ lock to call BN_BLINDING_invert_ex, and avoids one use of
+ BN_BLINDING_update for each BN_BLINDING structure (previously,
+ the last update always remained unused).
+ [Emilia Käsper (Google)]
+
+ *) Fix SSL memory handling for (EC)DH ciphersuites, in particular
+ for multi-threaded use of ECDH.
+ [Adam Langley (Google)]
+
+ *) Fix x509_name_ex_d2i memory leak on bad inputs.
+ [Bodo Moeller]
+
+ *) Add protection against ECDSA timing attacks as mentioned in the paper
+ by Billy Bob Brumley and Nicola Tuveri, see:
+
+ http://eprint.iacr.org/2011/232.pdf
+
+ [Billy Bob Brumley and Nicola Tuveri]
+
+ Changes between 0.9.8q and 0.9.8r [8 Feb 2011]
+
+ *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014
+ [Neel Mehta, Adam Langley, Bodo Moeller (Google)]
+
+ *) Fix bug in string printing code: if *any* escaping is enabled we must
+ escape the escape character (backslash) or the resulting string is
+ ambiguous.
+ [Steve Henson]
+
Changes between 0.9.8p and 0.9.8q [2 Dec 2010]
*) Disable code workaround for ancient and obsolete Netscape browsers
Modified: releng/8.3/crypto/openssl/Configure
==============================================================================
--- releng/8.3/crypto/openssl/Configure Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/Configure Tue Apr 2 17:34:42 2013 (r249029)
@@ -162,6 +162,7 @@ my %table=(
"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
"debug-ben-debug", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -ggdb3 -O2 -pipe::(unknown)::::::",
+"debug-ben-debug-64", "gcc:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-ben-debug-noopt", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -ggdb3 -pipe::(unknown)::::::",
"debug-ben-strict", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
@@ -172,10 +173,10 @@ my %table=(
"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
"debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
-"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -ggdb -g3 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
@@ -371,6 +372,9 @@ my %table=(
"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}",
+# Android: Linux but without -DTERMIO and pointers to headers and libs.
+"android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
#### *BSD [do see comment about ${BSDthreads} above!]
"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -425,8 +429,8 @@ my %table=(
"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
# at build time. $OBJECT_MODE is respected at ./config stage!
-"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
-"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
+"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
+"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded -D_THREAD_SAFE:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
#
# Cray T90 and similar (SDSC)
Modified: releng/8.3/crypto/openssl/FAQ
==============================================================================
--- releng/8.3/crypto/openssl/FAQ Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/FAQ Tue Apr 2 17:34:42 2013 (r249029)
@@ -10,6 +10,7 @@ OpenSSL - Frequently Asked Questions
* Why aren't tools like 'autoconf' and 'libtool' used?
* What is an 'engine' version?
* How do I check the authenticity of the OpenSSL distribution?
+* How does the versioning scheme work?
[LEGAL] Legal questions
@@ -82,7 +83,7 @@ OpenSSL - Frequently Asked Questions
* Which is the current version of OpenSSL?
The current version is available from <URL: http://www.openssl.org>.
-OpenSSL 1.0.0c was released on Dec 2nd, 2010.
+OpenSSL 1.0.1d was released on Feb 5th, 2013.
In addition to the current stable release, you can also access daily
snapshots of the OpenSSL development version at <URL:
@@ -108,7 +109,9 @@ In addition, you can read the most curre
<URL: http://www.openssl.org/docs/>. Note that the online documents refer
to the very latest development versions of OpenSSL and may include features
not present in released versions. If in doubt refer to the documentation
-that came with the version of OpenSSL you are using.
+that came with the version of OpenSSL you are using. The pod format
+documentation is included in each OpenSSL distribution under the docs
+directory.
For information on parts of libcrypto that are not yet documented, you
might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
@@ -173,6 +176,19 @@ just do:
pgp TARBALL.asc
+* How does the versioning scheme work?
+
+After the release of OpenSSL 1.0.0 the versioning scheme changed. Letter
+releases (e.g. 1.0.1a) can only contain bug and security fixes and no
+new features. Minor releases change the last number (e.g. 1.0.2) and
+can contain new features that retain binary compatibility. Changes to
+the middle number are considered major releases and neither source nor
+binary compatibility is guaranteed.
+
+Therefore the answer to the common question "when will feature X be
+backported to OpenSSL 1.0.0/0.9.8?" is "never" but it could appear
+in the next minor release.
+
[LEGAL] =======================================================================
* Do I need patent licenses to use OpenSSL?
@@ -284,7 +300,7 @@ current directory in this case, but this
Check out the CA.pl(1) manual page. This provides a simple wrapper round
the 'req', 'verify', 'ca' and 'pkcs12' utilities. For finer control check
out the manual pages for the individual utilities and the certificate
-extensions documentation (currently in doc/openssl.txt).
+extensions documentation (in ca(1), req(1), x509v3_config(5) )
* Why can't I create certificate requests?
Modified: releng/8.3/crypto/openssl/LICENSE
==============================================================================
--- releng/8.3/crypto/openssl/LICENSE Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/LICENSE Tue Apr 2 17:34:42 2013 (r249029)
@@ -12,7 +12,7 @@
---------------
/* ====================================================================
- * Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Modified: releng/8.3/crypto/openssl/Makefile
==============================================================================
--- releng/8.3/crypto/openssl/Makefile Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/Makefile Tue Apr 2 17:34:42 2013 (r249029)
@@ -4,7 +4,7 @@
## Makefile for OpenSSL
##
-VERSION=0.9.8q
+VERSION=0.9.8y
MAJOR=0
MINOR=9.8
SHLIB_VERSION_NUMBER=0.9.8
Modified: releng/8.3/crypto/openssl/NEWS
==============================================================================
--- releng/8.3/crypto/openssl/NEWS Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/NEWS Tue Apr 2 17:34:42 2013 (r249029)
@@ -5,6 +5,45 @@
This file gives a brief overview of the major changes between each OpenSSL
release. For more details please read the CHANGES file.
+ Major changes between OpenSSL 0.9.8x and OpenSSL 0.9.8y:
+
+ o Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169
+ o Fix OCSP bad key DoS attack CVE-2013-0166
+
+ Major changes between OpenSSL 0.9.8w and OpenSSL 0.9.8x:
+
+ o Fix DTLS record length checking bug CVE-2012-2333
+
+ Major changes between OpenSSL 0.9.8v and OpenSSL 0.9.8w:
+
+ o Fix for CVE-2012-2131 (corrected fix for 0.9.8 and CVE-2012-2110)
+
+ Major changes between OpenSSL 0.9.8u and OpenSSL 0.9.8v:
+
+ o Fix for ASN1 overflow bug CVE-2012-2110
+
+ Major changes between OpenSSL 0.9.8t and OpenSSL 0.9.8u:
+
+ o Fix for CMS/PKCS#7 MMA CVE-2012-0884
+ o Corrected fix for CVE-2011-4619
+ o Various DTLS fixes.
+
+ Major changes between OpenSSL 0.9.8s and OpenSSL 0.9.8t:
+
+ o Fix for DTLS DoS issue CVE-2012-0050
+
+ Major changes between OpenSSL 0.9.8r and OpenSSL 0.9.8s:
+
+ o Fix for DTLS plaintext recovery attack CVE-2011-4108
+ o Fix policy check double free error CVE-2011-4109
+ o Clear block padding bytes of SSL 3.0 records CVE-2011-4576
+ o Only allow one SGC handshake restart for SSL/TLS CVE-2011-4619
+ o Check for malformed RFC3779 data CVE-2011-4577
+
+ Major changes between OpenSSL 0.9.8q and OpenSSL 0.9.8r:
+
+ o Fix for security issue CVE-2011-0014
+
Major changes between OpenSSL 0.9.8p and OpenSSL 0.9.8q:
o Fix for security issue CVE-2010-4180
@@ -181,6 +220,11 @@
o Added initial support for Win64.
o Added alternate pkg-config files.
+ Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m:
+
+ o FIPS 1.1.1 module linking.
+ o Various ciphersuite selection fixes.
+
Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l:
o Introduce limits to prevent malicious key DoS (CVE-2006-2940)
Modified: releng/8.3/crypto/openssl/README
==============================================================================
--- releng/8.3/crypto/openssl/README Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/README Tue Apr 2 17:34:42 2013 (r249029)
@@ -1,7 +1,7 @@
- OpenSSL 0.9.8q 2 Dec 2010
+ OpenSSL 0.9.8y 5 Feb 2013
- Copyright (c) 1998-2009 The OpenSSL Project
+ Copyright (c) 1998-2011 The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
All rights reserved.
Modified: releng/8.3/crypto/openssl/apps/apps.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/apps.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/apps.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -2052,7 +2052,7 @@ X509_NAME *parse_name(char *subject, lon
X509_NAME *n = NULL;
int nid;
- if (!buf || !ne_types || !ne_values)
+ if (!buf || !ne_types || !ne_values || !mval)
{
BIO_printf(bio_err, "malloc error\n");
goto error;
@@ -2156,6 +2156,7 @@ X509_NAME *parse_name(char *subject, lon
OPENSSL_free(ne_values);
OPENSSL_free(ne_types);
OPENSSL_free(buf);
+ OPENSSL_free(mval);
return n;
error:
@@ -2164,6 +2165,8 @@ error:
OPENSSL_free(ne_values);
if (ne_types)
OPENSSL_free(ne_types);
+ if (mval)
+ OPENSSL_free(mval);
if (buf)
OPENSSL_free(buf);
return NULL;
Modified: releng/8.3/crypto/openssl/apps/asn1pars.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/asn1pars.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/asn1pars.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -408,6 +408,7 @@ static int do_generate(BIO *bio, char *g
atyp = ASN1_generate_nconf(genstr, cnf);
NCONF_free(cnf);
+ cnf = NULL;
if (!atyp)
return -1;
Modified: releng/8.3/crypto/openssl/apps/cms.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/cms.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/cms.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -226,6 +226,8 @@ int MAIN(int argc, char **argv)
else if (!strcmp(*args,"-camellia256"))
cipher = EVP_camellia_256_cbc();
#endif
+ else if (!strcmp (*args, "-debug_decrypt"))
+ flags |= CMS_DEBUG_DECRYPT;
else if (!strcmp (*args, "-text"))
flags |= CMS_TEXT;
else if (!strcmp (*args, "-nointern"))
@@ -611,7 +613,7 @@ int MAIN(int argc, char **argv)
BIO_printf (bio_err, "-certsout file certificate output file\n");
BIO_printf (bio_err, "-signer file signer certificate file\n");
BIO_printf (bio_err, "-recip file recipient certificate file for decryption\n");
- BIO_printf (bio_err, "-skeyid use subject key identifier\n");
+ BIO_printf (bio_err, "-keyid use subject key identifier\n");
BIO_printf (bio_err, "-in file input file\n");
BIO_printf (bio_err, "-inform arg input format SMIME (default), PEM or DER\n");
BIO_printf (bio_err, "-inkey file input private key (if not signer or recipient)\n");
@@ -1013,6 +1015,8 @@ int MAIN(int argc, char **argv)
ret = 4;
if (operation == SMIME_DECRYPT)
{
+ if (flags & CMS_DEBUG_DECRYPT)
+ CMS_decrypt(cms, NULL, NULL, NULL, NULL, flags);
if (secret_key)
{
Modified: releng/8.3/crypto/openssl/apps/dhparam.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/dhparam.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/dhparam.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -332,7 +332,6 @@ bad:
BIO_printf(bio_err,"This is going to take a long time\n");
if(!dh || !DH_generate_parameters_ex(dh, num, g, &cb))
{
- if(dh) DH_free(dh);
ERR_print_errors(bio_err);
goto end;
}
Modified: releng/8.3/crypto/openssl/apps/openssl.cnf
==============================================================================
--- releng/8.3/crypto/openssl/apps/openssl.cnf Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/openssl.cnf Tue Apr 2 17:34:42 2013 (r249029)
@@ -142,7 +142,7 @@ localityName = Locality Name (eg, city
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
-commonName = Common Name (eg, YOUR name)
+commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
Modified: releng/8.3/crypto/openssl/apps/pkcs12.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/pkcs12.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/pkcs12.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -659,7 +659,7 @@ int MAIN(int argc, char **argv)
if (!twopass) BUF_strlcpy(macpass, pass, sizeof macpass);
- if (options & INFO) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
+ if ((options & INFO) && p12->mac) BIO_printf (bio_err, "MAC Iteration %ld\n", p12->mac->iter ? ASN1_INTEGER_get (p12->mac->iter) : 1);
if(macver) {
#ifdef CRYPTO_MDEBUG
CRYPTO_push_info("verify MAC");
Modified: releng/8.3/crypto/openssl/apps/s_client.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/s_client.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/s_client.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -345,13 +345,7 @@ int MAIN(int argc, char **argv)
char *jpake_secret = NULL;
#endif
-#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
meth=SSLv23_client_method();
-#elif !defined(OPENSSL_NO_SSL3)
- meth=SSLv3_client_method();
-#elif !defined(OPENSSL_NO_SSL2)
- meth=SSLv2_client_method();
-#endif
apps_startup();
c_Pause=0;
Modified: releng/8.3/crypto/openssl/apps/s_server.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/s_server.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/s_server.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -781,13 +781,7 @@ int MAIN(int argc, char *argv[])
tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
#endif
-#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
meth=SSLv23_server_method();
-#elif !defined(OPENSSL_NO_SSL3)
- meth=SSLv3_server_method();
-#elif !defined(OPENSSL_NO_SSL2)
- meth=SSLv2_server_method();
-#endif
local_argc=argc;
local_argv=argv;
@@ -1556,6 +1550,12 @@ end:
if (dpass)
OPENSSL_free(dpass);
#ifndef OPENSSL_NO_TLSEXT
+ if (tlscstatp.host)
+ OPENSSL_free(tlscstatp.host);
+ if (tlscstatp.port)
+ OPENSSL_free(tlscstatp.port);
+ if (tlscstatp.path)
+ OPENSSL_free(tlscstatp.path);
if (ctx2 != NULL) SSL_CTX_free(ctx2);
if (s_cert2)
X509_free(s_cert2);
Modified: releng/8.3/crypto/openssl/apps/x509.c
==============================================================================
--- releng/8.3/crypto/openssl/apps/x509.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/apps/x509.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -969,7 +969,7 @@ bad:
else
{
pk=load_key(bio_err,
- keyfile, FORMAT_PEM, 0,
+ keyfile, keyformat, 0,
passin, e, "request key");
if (pk == NULL) goto end;
}
Modified: releng/8.3/crypto/openssl/config
==============================================================================
--- releng/8.3/crypto/openssl/config Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/config Tue Apr 2 17:34:42 2013 (r249029)
@@ -790,6 +790,10 @@ esac
# options="$options -DATALLA"
#fi
+($CC -Wa,--help -c -o /dev/null -x assembler /dev/null 2>&1 | \
+ grep \\--noexecstack) 2>&1 > /dev/null && \
+ options="$options -Wa,--noexecstack"
+
# gcc < 2.8 does not support -march=ultrasparc
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
then
Modified: releng/8.3/crypto/openssl/crypto/asn1/a_object.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/a_object.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/a_object.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -139,7 +139,7 @@ int a2d_ASN1_OBJECT(unsigned char *out,
ASN1err(ASN1_F_A2D_ASN1_OBJECT,ASN1_R_INVALID_DIGIT);
goto err;
}
- if (!use_bn && l > (ULONG_MAX / 10L))
+ if (!use_bn && l >= ((ULONG_MAX - 80) / 10L))
{
use_bn = 1;
if (!bl)
@@ -294,7 +294,7 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT
/* Sanity check OID encoding: can't have leading 0x80 in
* subidentifiers, see: X.690 8.19.2
*/
- for (i = 0, p = *pp + 1; i < len - 1; i++, p++)
+ for (i = 0, p = *pp; i < len; i++, p++)
{
if (*p == 0x80 && (!i || !(p[-1] & 0x80)))
{
Modified: releng/8.3/crypto/openssl/crypto/asn1/a_strex.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/a_strex.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/a_strex.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -74,6 +74,11 @@
#define CHARTYPE_BS_ESC (ASN1_STRFLGS_ESC_2253 | CHARTYPE_FIRST_ESC_2253 | CHARTYPE_LAST_ESC_2253)
+#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
+ ASN1_STRFLGS_ESC_QUOTE | \
+ ASN1_STRFLGS_ESC_CTRL | \
+ ASN1_STRFLGS_ESC_MSB)
+
/* Three IO functions for sending data to memory, a BIO and
* and a FILE pointer.
@@ -148,6 +153,13 @@ static int do_esc_char(unsigned long c,
if(!io_ch(arg, tmphex, 3)) return -1;
return 3;
}
+ /* If we get this far and do any escaping at all must escape
+ * the escape character itself: backslash.
+ */
+ if (chtmp == '\\' && flags & ESC_FLAGS) {
+ if(!io_ch(arg, "\\\\", 2)) return -1;
+ return 2;
+ }
if(!io_ch(arg, &chtmp, 1)) return -1;
return 1;
}
@@ -292,11 +304,6 @@ static const signed char tag2nbyte[] = {
4, -1, 2 /* 28-30 */
};
-#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \
- ASN1_STRFLGS_ESC_QUOTE | \
- ASN1_STRFLGS_ESC_CTRL | \
- ASN1_STRFLGS_ESC_MSB)
-
/* This is the main function, print out an
* ASN1_STRING taking note of various escape
* and display options. Returns number of
@@ -560,6 +567,7 @@ int ASN1_STRING_to_UTF8(unsigned char **
if(mbflag == -1) return -1;
mbflag |= MBSTRING_FLAG;
stmp.data = NULL;
+ stmp.length = 0;
ret = ASN1_mbstring_copy(&str, in->data, in->length, mbflag, B_ASN1_UTF8STRING);
if(ret < 0) return ret;
*out = stmp.data;
Modified: releng/8.3/crypto/openssl/crypto/asn1/a_strnid.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/a_strnid.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/a_strnid.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -96,7 +96,7 @@ unsigned long ASN1_STRING_get_default_ma
* default: the default value, Printable, T61, BMP.
*/
-int ASN1_STRING_set_default_mask_asc(char *p)
+int ASN1_STRING_set_default_mask_asc(const char *p)
{
unsigned long mask;
char *end;
Modified: releng/8.3/crypto/openssl/crypto/asn1/a_verify.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/a_verify.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/a_verify.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -138,6 +138,12 @@ int ASN1_item_verify(const ASN1_ITEM *it
unsigned char *buf_in=NULL;
int ret= -1,i,inl;
+ if (!pkey)
+ {
+ ASN1err(ASN1_F_ASN1_ITEM_VERIFY, ERR_R_PASSED_NULL_PARAMETER);
+ return -1;
+ }
+
EVP_MD_CTX_init(&ctx);
i=OBJ_obj2nid(a->algorithm);
type=EVP_get_digestbyname(OBJ_nid2sn(i));
Modified: releng/8.3/crypto/openssl/crypto/asn1/asn1.h
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/asn1.h Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/asn1.h Tue Apr 2 17:34:42 2013 (r249029)
@@ -1051,7 +1051,7 @@ ASN1_STRING *ASN1_pack_string(void *obj,
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct);
void ASN1_STRING_set_default_mask(unsigned long mask);
-int ASN1_STRING_set_default_mask_asc(char *p);
+int ASN1_STRING_set_default_mask_asc(const char *p);
unsigned long ASN1_STRING_get_default_mask(void);
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
int inform, unsigned long mask);
Modified: releng/8.3/crypto/openssl/crypto/asn1/asn_mime.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/asn_mime.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/asn_mime.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -418,9 +418,9 @@ ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BI
if(strcmp(hdr->value, "application/x-pkcs7-signature") &&
strcmp(hdr->value, "application/pkcs7-signature")) {
- sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
ASN1err(ASN1_F_SMIME_READ_ASN1,ASN1_R_SIG_INVALID_MIME_TYPE);
ERR_add_error_data(2, "type: ", hdr->value);
+ sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
sk_BIO_pop_free(parts, BIO_vfree);
return NULL;
}
@@ -790,12 +790,17 @@ static int mime_hdr_addparam(MIME_HEADER
static int mime_hdr_cmp(const MIME_HEADER * const *a,
const MIME_HEADER * const *b)
{
+ if (!(*a)->name || !(*b)->name)
+ return !!(*a)->name - !!(*b)->name;
+
return(strcmp((*a)->name, (*b)->name));
}
static int mime_param_cmp(const MIME_PARAM * const *a,
const MIME_PARAM * const *b)
{
+ if (!(*a)->param_name || !(*b)->param_name)
+ return !!(*a)->param_name - !!(*b)->param_name;
return(strcmp((*a)->param_name, (*b)->param_name));
}
Modified: releng/8.3/crypto/openssl/crypto/asn1/x_name.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/x_name.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/x_name.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -196,7 +196,9 @@ static int x509_name_ex_d2i(ASN1_VALUE *
*val = nm.a;
*in = p;
return ret;
- err:
+err:
+ if (nm.x != NULL)
+ X509_NAME_free(nm.x);
ASN1err(ASN1_F_X509_NAME_EX_D2I, ERR_R_NESTED_ASN1_ERROR);
return 0;
}
Modified: releng/8.3/crypto/openssl/crypto/asn1/x_pubkey.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/asn1/x_pubkey.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/asn1/x_pubkey.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -367,7 +367,19 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *k
goto err;
}
- key->pkey = ret;
+ /* Check to see if another thread set key->pkey first */
+ CRYPTO_w_lock(CRYPTO_LOCK_EVP_PKEY);
+ if (key->pkey)
+ {
+ CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
+ EVP_PKEY_free(ret);
+ ret = key->pkey;
+ }
+ else
+ {
+ key->pkey = ret;
+ CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
+ }
CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);
return(ret);
err:
Modified: releng/8.3/crypto/openssl/crypto/bio/bf_buff.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bio/bf_buff.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bio/bf_buff.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -209,7 +209,7 @@ start:
/* add to buffer and return */
if (i >= inl)
{
- memcpy(&(ctx->obuf[ctx->obuf_len]),in,inl);
+ memcpy(&(ctx->obuf[ctx->obuf_off+ctx->obuf_len]),in,inl);
ctx->obuf_len+=inl;
return(num+inl);
}
@@ -219,7 +219,7 @@ start:
{
if (i > 0) /* lets fill it up if we can */
{
- memcpy(&(ctx->obuf[ctx->obuf_len]),in,i);
+ memcpy(&(ctx->obuf[ctx->obuf_off+ctx->obuf_len]),in,i);
in+=i;
inl-=i;
num+=i;
@@ -294,9 +294,9 @@ static long buffer_ctrl(BIO *b, int cmd,
case BIO_C_GET_BUFF_NUM_LINES:
ret=0;
p1=ctx->ibuf;
- for (i=ctx->ibuf_off; i<ctx->ibuf_len; i++)
+ for (i=0; i<ctx->ibuf_len; i++)
{
- if (p1[i] == '\n') ret++;
+ if (p1[ctx->ibuf_off + i] == '\n') ret++;
}
break;
case BIO_CTRL_WPENDING:
@@ -399,17 +399,18 @@ static long buffer_ctrl(BIO *b, int cmd,
for (;;)
{
BIO_clear_retry_flags(b);
- if (ctx->obuf_len > ctx->obuf_off)
+ if (ctx->obuf_len > 0)
{
r=BIO_write(b->next_bio,
&(ctx->obuf[ctx->obuf_off]),
- ctx->obuf_len-ctx->obuf_off);
+ ctx->obuf_len);
#if 0
-fprintf(stderr,"FLUSH [%3d] %3d -> %3d\n",ctx->obuf_off,ctx->obuf_len-ctx->obuf_off,r);
+fprintf(stderr,"FLUSH [%3d] %3d -> %3d\n",ctx->obuf_off,ctx->obuf_len,r);
#endif
BIO_copy_next_retry(b);
if (r <= 0) return((long)r);
ctx->obuf_off+=r;
+ ctx->obuf_len-=r;
}
else
{
Modified: releng/8.3/crypto/openssl/crypto/bio/bio.h
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bio/bio.h Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bio/bio.h Tue Apr 2 17:34:42 2013 (r249029)
@@ -145,6 +145,7 @@ extern "C" {
/* #endif */
#define BIO_CTRL_DGRAM_QUERY_MTU 40 /* as kernel for current MTU */
+#define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
#define BIO_CTRL_DGRAM_GET_MTU 41 /* get cached value for MTU */
#define BIO_CTRL_DGRAM_SET_MTU 42 /* set cached value for
* MTU. want to use this
@@ -321,6 +322,15 @@ DECLARE_STACK_OF(BIO)
typedef struct bio_f_buffer_ctx_struct
{
+ /* Buffers are setup like this:
+ *
+ * <---------------------- size ----------------------->
+ * +---------------------------------------------------+
+ * | consumed | remaining | free space |
+ * +---------------------------------------------------+
+ * <-- off --><------- len ------->
+ */
+
/* BIO *bio; */ /* this is now in the BIO struct */
int ibuf_size; /* how big is the input buffer */
int obuf_size; /* how big is the output buffer */
Modified: releng/8.3/crypto/openssl/crypto/bio/bss_dgram.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bio/bss_dgram.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bio/bss_dgram.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -57,7 +57,6 @@
*
*/
-#ifndef OPENSSL_NO_DGRAM
#include <stdio.h>
#include <errno.h>
@@ -65,6 +64,7 @@
#include "cryptlib.h"
#include <openssl/bio.h>
+#ifndef OPENSSL_NO_DGRAM
#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
#include <sys/timeb.h>
@@ -288,7 +288,6 @@ static int dgram_read(BIO *b, char *out,
*/
dgram_adjust_rcv_timeout(b);
ret=recvfrom(b->num,out,outl,0,&peer,(void *)&peerlen);
- dgram_reset_rcv_timeout(b);
if ( ! data->connected && ret >= 0)
BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, &peer);
@@ -302,6 +301,8 @@ static int dgram_read(BIO *b, char *out,
data->_errno = get_last_socket_error();
}
}
+
+ dgram_reset_rcv_timeout(b);
}
return(ret);
}
@@ -493,6 +494,9 @@ static long dgram_ctrl(BIO *b, int cmd,
ret = 0;
#endif
break;
+ case BIO_CTRL_DGRAM_GET_FALLBACK_MTU:
+ ret = 576 - 20 - 8;
+ break;
case BIO_CTRL_DGRAM_GET_MTU:
return data->mtu;
break;
@@ -654,9 +658,13 @@ static int BIO_dgram_should_retry(int i)
{
err=get_last_socket_error();
-#if defined(OPENSSL_SYS_WINDOWS) && 0 /* more microsoft stupidity? perhaps not? Ben 4/1/99 */
- if ((i == -1) && (err == 0))
- return(1);
+#if defined(OPENSSL_SYS_WINDOWS)
+ /* If the socket return value (i) is -1
+ * and err is unexpectedly 0 at this point,
+ * the error code was overwritten by
+ * another system call before this error
+ * handling is called.
+ */
#endif
return(BIO_dgram_non_fatal_error(err));
@@ -719,7 +727,6 @@ int BIO_dgram_non_fatal_error(int err)
}
return(0);
}
-#endif
static void get_current_time(struct timeval *t)
{
@@ -737,3 +744,5 @@ static void get_current_time(struct time
gettimeofday(t, NULL);
#endif
}
+
+#endif
Modified: releng/8.3/crypto/openssl/crypto/bn/asm/mo-586.pl
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bn/asm/mo-586.pl Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bn/asm/mo-586.pl Tue Apr 2 17:34:42 2013 (r249029)
@@ -539,8 +539,10 @@ $sbit=$num;
&jle (&label("sqradd"));
&mov ($carry,"edx");
- &lea ("edx",&DWP(0,$sbit,"edx",2));
+ &add ("edx","edx");
&shr ($carry,31);
+ &add ("edx",$sbit);
+ &adc ($carry,0);
&set_label("sqrlast");
&mov ($word,$_n0);
&mov ($inp,$_np);
Modified: releng/8.3/crypto/openssl/crypto/bn/asm/ppc.pl
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bn/asm/ppc.pl Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bn/asm/ppc.pl Tue Apr 2 17:34:42 2013 (r249029)
@@ -1039,7 +1039,7 @@ sub data {
addze r11,r0
#mul_add_c(a[3],b[2],c3,c1,c2);
$LD r6,`3*$BNSZ`(r4)
- $LD r7,`2*$BNSZ`(r4)
+ $LD r7,`2*$BNSZ`(r5)
$UMULL r8,r6,r7
$UMULH r9,r6,r7
addc r12,r8,r12
Modified: releng/8.3/crypto/openssl/crypto/bn/bn_blind.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bn/bn_blind.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bn/bn_blind.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -123,7 +123,7 @@ struct bn_blinding_st
BIGNUM *mod; /* just a reference */
unsigned long thread_id; /* added in OpenSSL 0.9.6j and 0.9.7b;
* used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
- unsigned int counter;
+ int counter;
unsigned long flags;
BN_MONT_CTX *m_ctx;
int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
@@ -157,7 +157,10 @@ BN_BLINDING *BN_BLINDING_new(const BIGNU
if (BN_get_flags(mod, BN_FLG_CONSTTIME) != 0)
BN_set_flags(ret->mod, BN_FLG_CONSTTIME);
- ret->counter = BN_BLINDING_COUNTER;
+ /* Set the counter to the special value -1
+ * to indicate that this is never-used fresh blinding
+ * that does not need updating before first use. */
+ ret->counter = -1;
return(ret);
err:
if (ret != NULL) BN_BLINDING_free(ret);
@@ -186,7 +189,10 @@ int BN_BLINDING_update(BN_BLINDING *b, B
goto err;
}
- if (--(b->counter) == 0 && b->e != NULL &&
+ if (b->counter == -1)
+ b->counter = 0;
+
+ if (++b->counter == BN_BLINDING_COUNTER && b->e != NULL &&
!(b->flags & BN_BLINDING_NO_RECREATE))
{
/* re-create blinding parameters */
@@ -201,8 +207,8 @@ int BN_BLINDING_update(BN_BLINDING *b, B
ret=1;
err:
- if (b->counter == 0)
- b->counter = BN_BLINDING_COUNTER;
+ if (b->counter == BN_BLINDING_COUNTER)
+ b->counter = 0;
return(ret);
}
@@ -223,6 +229,12 @@ int BN_BLINDING_convert_ex(BIGNUM *n, BI
return(0);
}
+ if (b->counter == -1)
+ /* Fresh blinding, doesn't need updating. */
+ b->counter = 0;
+ else if (!BN_BLINDING_update(b,ctx))
+ return(0);
+
if (r != NULL)
{
if (!BN_copy(r, b->Ai)) ret=0;
@@ -243,22 +255,19 @@ int BN_BLINDING_invert_ex(BIGNUM *n, con
int ret;
bn_check_top(n);
- if ((b->A == NULL) || (b->Ai == NULL))
- {
- BNerr(BN_F_BN_BLINDING_INVERT_EX,BN_R_NOT_INITIALIZED);
- return(0);
- }
if (r != NULL)
ret = BN_mod_mul(n, n, r, b->mod, ctx);
else
- ret = BN_mod_mul(n, n, b->Ai, b->mod, ctx);
-
- if (ret >= 0)
{
- if (!BN_BLINDING_update(b,ctx))
+ if (b->Ai == NULL)
+ {
+ BNerr(BN_F_BN_BLINDING_INVERT_EX,BN_R_NOT_INITIALIZED);
return(0);
+ }
+ ret = BN_mod_mul(n, n, b->Ai, b->mod, ctx);
}
+
bn_check_top(n);
return(ret);
}
Modified: releng/8.3/crypto/openssl/crypto/bn/bn_gf2m.c
==============================================================================
--- releng/8.3/crypto/openssl/crypto/bn/bn_gf2m.c Tue Apr 2 17:29:17 2013 (r249028)
+++ releng/8.3/crypto/openssl/crypto/bn/bn_gf2m.c Tue Apr 2 17:34:42 2013 (r249029)
@@ -607,6 +607,7 @@ int BN_GF2m_mod_inv(BIGNUM *r, const BIG
{
while (!BN_is_odd(u))
{
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-releng
mailing list