Recent changes from 0.9.7-stable.
authorRichard Levitte <levitte@openssl.org>
Tue, 23 Mar 2004 15:01:13 +0000 (15:01 +0000)
committerRichard Levitte <levitte@openssl.org>
Tue, 23 Mar 2004 15:01:13 +0000 (15:01 +0000)
19 files changed:
CHANGES
FAQ
LICENSE
Makefile.org
NEWS
README
STATUS
apps/apps.c
apps/x509.c
crypto/bio/b_print.c
crypto/bio/bss_file.c
crypto/ec/ecp_smpl.c
crypto/opensslv.h
doc/crypto/pem.pod
openssl.spec
ssl/kssl.c
ssl/s3_pkt.c
ssl/s3_srvr.c
tools/c_issuer

diff --git a/CHANGES b/CHANGES
index c2ad5a196b802cbad125478bc44bb117dbb6124d..d388a528c25ea0b8492551f1bc1923b8dc2bb416 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,7 +2,19 @@
  OpenSSL CHANGES
  _______________
 
- Changes between 0.9.7c and 0.9.7d  [xx XXX XXXX]
+ Changes between 0.9.7d and 0.9.7e  [XX xxx XXXX]
+
+  *)
+
+ Changes between 0.9.7c and 0.9.7d  [17 Mar 2004]
+
+  *) Fix null-pointer assignment in do_change_cipher_spec() revealed           
+     by using the Codenomicon TLS Test Tool (CAN-2004-0079)                    
+     [Joe Orton, Steve Henson]   
+
+  *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites
+     (CAN-2004-0112)
+     [Joe Orton, Steve Henson]   
 
   *) Make it possible to have multiple active certificates with the same
      subject in the CA index file.  This is done only if the keyword
diff --git a/FAQ b/FAQ
index 01e2ccf18a95e85b63cf99d2d34849fc62717d53..0b40039ef81ea6e5c33a6801f2fb3f4a447da168 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -68,7 +68,7 @@ OpenSSL  -  Frequently Asked Questions
 * Which is the current version of OpenSSL?
 
 The current version is available from <URL: http://www.openssl.org>.
-OpenSSL 0.9.7c was released on September 30, 2003.
+OpenSSL 0.9.7d was released on March 17, 2004.
 
 In addition to the current stable release, you can also access daily
 snapshots of the OpenSSL development version at <URL:
diff --git a/LICENSE b/LICENSE
index dddb07842bb380171e4b606b4e89dfa1cb081691..40277883a5925e352fc56851651fc86c26f16e63 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -12,7 +12,7 @@
   ---------------
 
 /* ====================================================================
- * Copyright (c) 1998-2003 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 1998-2004 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
index 4752c635f5d797fbcfe1099c11e32b5c2fbb571a..72d32eb0b41c11a24bac8abe806119264d49f249 100644 (file)
@@ -476,7 +476,7 @@ do_irix-shared:
                if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \
                        libs="$(LIBKRB5) $$libs"; \
                fi; \
-               ( WHOLELIB="-all lib$$i.a -noall"; \
+               ( WHOLELIB="-all lib$$i.a -notall"; \
                  (${CC} -v 2>&1 | grep gcc) > /dev/null && WHOLELIB="-Wl,-all,lib$$i.a,-notall"; \
                  set -x; ${CC} ${SHARED_LDFLAGS} \
                        -shared -o lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
diff --git a/NEWS b/NEWS
index f0282ebb87558f8b6f08ca1d6b74c4323f08b0e9..4c1ba0a241f663fc3e841abadf8b6c5b46b10012 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,14 @@
   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.7c and OpenSSL 0.9.7d:
+
+      o Security: Fix Kerberos ciphersuite SSL/TLS handshaking bug
+      o Security: Fix null-pointer assignment in do_change_cipher_spec()
+      o Allow multiple active certificates with same subject in CA index
+      o Multiple X590 verification fixes
+      o Speed up HMAC and other operations
+
   Major changes between OpenSSL 0.9.7b and OpenSSL 0.9.7c:
 
       o Security: fix various ASN1 parsing bugs.
diff --git a/README b/README
index 65e3a124263b90fdd5698485a6a378d548619cba..f72a21036f9fbc42ab05e279f7035062197e2dcf 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 
- OpenSSL 0.9.7c 30 Sep 2003
+ OpenSSL 0.9.7d 17 Mar 2004
 
- Copyright (c) 1998-2003 The OpenSSL Project
+ Copyright (c) 1998-2004 The OpenSSL Project
  Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
  All rights reserved.
 
diff --git a/STATUS b/STATUS
index 7f3b29eb6065713e2b5756230883efc56e9d0a26..4951a464fc16346266b5fd1adad4ead6db2099d3 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -1,14 +1,17 @@
 
   OpenSSL STATUS                           Last modified at
-  ______________                           $Date: 2003/10/02 10:55:20 $
+  ______________                           $Date: 2004/03/23 15:00:59 $
 
   DEVELOPMENT STATE
 
     o  OpenSSL 0.9.8:  Under development...
+    o  OpenSSL 0.9.7d: Released on March     17th, 2004
     o  OpenSSL 0.9.7c: Released on September 30th, 2003
     o  OpenSSL 0.9.7b: Released on April     10th, 2003
     o  OpenSSL 0.9.7a: Released on February  19th, 2003
     o  OpenSSL 0.9.7:  Released on December  31st, 2002
+    o  OpenSSL 0.9.6m: Released on March     17th, 2004
+    o  OpenSSL 0.9.6l: Released on November   4th, 2003
     o  OpenSSL 0.9.6k: Released on September 30th, 2003
     o  OpenSSL 0.9.6j: Released on April     10th, 2003
     o  OpenSSL 0.9.6i: Released on February  19th, 2003
index 77fa39d2730849bd6fb6293a4d4a19e92335ce70..ec5f5c1c90db73bec1733b0491372342ccd28e0a 100644 (file)
@@ -1944,6 +1944,9 @@ int rotate_index(char *dbfile, char *new_suffix, char *old_suffix)
 
 void free_index(CA_DB *db)
        {
-       TXT_DB_free(db->db);
-       OPENSSL_free(db);
+       if (db)
+               {
+               if (db->db) TXT_DB_free(db->db);
+               OPENSSL_free(db);
+               }
        }
index 58f89de58895bb72aa22e3157ec2c1b1d44734d3..9b95f7bd3fec470d0cd219d32a0f42f42f9b0a30 100644 (file)
@@ -1025,7 +1025,6 @@ end:
 static ASN1_INTEGER *x509_load_serial(char *CAfile, char *serialfile, int create)
        {
        char *buf = NULL, *p;
-       MS_STATIC char buf2[1024];
        ASN1_INTEGER *bs = NULL;
        BIGNUM *serial = NULL;
        size_t len;
index fbff331796804683fef7c463b268ae8f3476396e..c2bb357b4c61d6e46a66658046808eff6d575653 100644 (file)
@@ -641,7 +641,7 @@ fmtfp(
        multiplying by a factor of 10 */
     fracpart = roundv((pow10(max)) * (ufvalue - intpart));
 
-    if (fracpart >= pow10(max)) {
+    if (fracpart >= (long)pow10(max)) {
         intpart++;
         fracpart -= (long)pow10(max);
     }
index 9cdf159f82f827c5f2ed22a7eb47fdd1bbda6fd6..554474733fbcef6c5f6a8413ea1b20b560843158 100644 (file)
@@ -213,14 +213,14 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
                b->shutdown=(int)num&BIO_CLOSE;
                b->ptr=(char *)ptr;
                b->init=1;
+               {
+               int fd = fileno((FILE*)ptr);
 #if defined(OPENSSL_SYS_WINDOWS)
                if (num & BIO_FP_TEXT)
-                       _setmode(fileno((FILE *)ptr),_O_TEXT);
+                       _setmode(fd,_O_TEXT);
                else
-                       _setmode(fileno((FILE *)ptr),_O_BINARY);
+                       _setmode(fd,_O_BINARY);
 #elif defined(OPENSSL_SYS_MSDOS)
-               {
-               int fd = fileno((FILE*)ptr);
                /* Set correct text/binary mode */
                if (num & BIO_FP_TEXT)
                        _setmode(fd,_O_TEXT);
@@ -235,13 +235,13 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
                        else
                                _setmode(fd,_O_BINARY);
                        }
-               }
 #elif defined(OPENSSL_SYS_OS2)
                if (num & BIO_FP_TEXT)
-                       setmode(fileno((FILE *)ptr), O_TEXT);
+                       setmode(fd, O_TEXT);
                else
-                       setmode(fileno((FILE *)ptr), O_BINARY);
+                       setmode(fd, O_BINARY);
 #endif
+               }
                break;
        case BIO_C_SET_FILENAME:
                file_free(b);
index 4666a052bfabf0859d465221c0fd2a679aba897a..e9a51fb87a1ce86eebb4d516553361e8586a1999 100644 (file)
@@ -896,7 +896,7 @@ int ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
                }
        form = buf[0];
        y_bit = form & 1;
-       form = form & ~1;
+       form = form & ~1U;
        if ((form != 0) && (form != POINT_CONVERSION_COMPRESSED)
                && (form != POINT_CONVERSION_UNCOMPRESSED)
                && (form != POINT_CONVERSION_HYBRID))
index 102f11454176a4c2603de1cf76e6739e4b1ca619..64337d9e7f9a394507ced67d996429b14ca9dc3e 100644 (file)
@@ -25,8 +25,8 @@
  * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
  *  major minor fix final patch/beta)
  */
-#define OPENSSL_VERSION_NUMBER 0x00907040L
-#define OPENSSL_VERSION_TEXT   "OpenSSL 0.9.7d-dev [fips] xx XXX XXXX"
+#define OPENSSL_VERSION_NUMBER 0x00907050L
+#define OPENSSL_VERSION_TEXT   "OpenSSL 0.9.7e-dev [fips] XX xxx XXXX"
 #define OPENSSL_VERSION_PTEXT  " part of " OPENSSL_VERSION_TEXT
 
 
index 8613114452e8a7182e4591dde102e48eb5db1ea8..4f9a27df0cc4df9afea0a8ff1fa39864eef9cd4d 100644 (file)
@@ -471,6 +471,6 @@ is guaranteed to work.
 =head1 RETURN CODES
 
 The read routines return either a pointer to the structure read or NULL
-is an error occurred.
+if an error occurred.
 
 The write routines return 1 for success or 0 for failure.
index 9ce236e0d21efc9131f36436b9f64a21ffad4c48..6a272f69698ec16b185d611d19368ea269f5371b 100644 (file)
@@ -1,7 +1,7 @@
 %define libmaj 0
 %define libmin 9
 %define librel 7
-%define librev c
+%define librev d
 Release: 1
 
 %define openssldir /var/ssl
index 7c45f8ff4e6d7e7f8615f6dfc000c43384394094..51378897f6e244ce20b282b7ed0ca4f6bae6222f 100644 (file)
@@ -953,7 +953,7 @@ print_krb5_authdata(char *label, krb5_authdata **adata)
                printf("%s, authdata==0\n", label);
                return;
                }
-       printf("%s [%p]\n", label, adata);
+       printf("%s [%p]\n", label, (void *)adata);
 #if 0
        {
         int    i;
@@ -1725,7 +1725,7 @@ kssl_ctx_show(KSSL_CTX *kssl_ctx)
                return;
                }
        else
-               printf("%p\n", kssl_ctx);
+               printf("%p\n", (void *)kssl_ctx);
 
        printf("\tservice:\t%s\n",
                 (kssl_ctx->service_name)? kssl_ctx->service_name: "NULL");
index 3f88429e79a66ae5c189894332023b0b06b1c31a..9f3e5139ad976240cbd5ac6676c27bd95ae8cd65 100644 (file)
@@ -1085,6 +1085,14 @@ start:
                        goto err;
                        }
 
+               /* Check we have a cipher to change to */
+               if (s->s3->tmp.new_cipher == NULL)
+                       {
+                       i=SSL_AD_UNEXPECTED_MESSAGE;
+                       SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_CCS_RECEIVED_EARLY);
+                       goto err;
+                       }
+
                rr->length=0;
 
                if (s->msg_callback)
index 79278680c630da8f4001dc049149c70707fcb8a4..2a87852fde5bcabbe39ba4fed9cbb2dce8ce636a 100644 (file)
@@ -1597,11 +1597,27 @@ static int ssl3_get_client_key_exchange(SSL *s)
 
                n2s(p,i);
                enc_ticket.length = i;
+
+               if (n < enc_ticket.length + 6)
+                       {
+                       SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
+                               SSL_R_DATA_LENGTH_TOO_LONG);
+                       goto err;
+                       }
+
                enc_ticket.data = (char *)p;
                p+=enc_ticket.length;
 
                n2s(p,i);
                authenticator.length = i;
+
+               if (n < enc_ticket.length + authenticator.length + 6)
+                       {
+                       SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
+                               SSL_R_DATA_LENGTH_TOO_LONG);
+                       goto err;
+                       }
+
                authenticator.data = (char *)p;
                p+=authenticator.length;
 
index 4c691201bb473cb93b5a13c55ca83fa0ea4acebe..55821ab740d5ac02475fb4cfe9e32a22837b5b95 100644 (file)
@@ -6,5 +6,5 @@
 for i in $*
 do
        n=`openssl x509 -issuer -noout -in $i`
-       echo "$i\t$n"
+       echo "$i        $n"
 done