Author: oden
Date: Tue Feb  6 14:43:38 2007
New Revision: 116743

Added:
   
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7-CVE-2006-2940.patch
   
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2937.patch
   
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2940-2.patch
   
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-3738.patch
   packages/cooker/uClibc-openssl/current/SOURCES/openssl-CVE-2006-4343.patch
Modified:
   packages/cooker/uClibc-openssl/current/SPECS/uClibc-openssl.spec

Log:
- sync with openssl-0.9.7g-2.5.20060mdk

Added: 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7-CVE-2006-2940.patch
==============================================================================
--- (empty file)
+++ 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7-CVE-2006-2940.patch
    Tue Feb  6 14:43:38 2007
@@ -0,0 +1,211 @@
+diff -uNrp openssl-0.9.7g.orig/crypto/dh/dh_err.c 
openssl-0.9.7g/crypto/dh/dh_err.c
+--- crypto/dh/dh_err.c 2004-06-19 15:15:34.000000000 +0200
++++ crypto/dh/dh_err.c 2006-09-26 18:37:49.000000000 +0200
+@@ -78,6 +78,7 @@ static ERR_STRING_DATA DH_str_functs[]=
+ static ERR_STRING_DATA DH_str_reasons[]=
+       {
+ {DH_R_BAD_GENERATOR                      ,"bad generator"},
++{DH_R_MODULUS_TOO_LARGE                  ,"modulus too large"},
+ {DH_R_NO_PRIVATE_VALUE                   ,"no private value"},
+ {0,NULL}
+       };
+diff -uNrp openssl-0.9.7g.orig/crypto/dh/dh.h openssl-0.9.7g/crypto/dh/dh.h
+--- crypto/dh/dh.h     2004-06-19 15:15:34.000000000 +0200
++++ crypto/dh/dh.h     2006-09-26 18:36:45.000000000 +0200
+@@ -70,6 +70,10 @@
+ #include <openssl/crypto.h>
+ #include <openssl/ossl_typ.h>
+       
++#ifndef OPENSSL_DH_MAX_MODULUS_BITS
++# define OPENSSL_DH_MAX_MODULUS_BITS  10000
++#endif
++
+ #define DH_FLAG_CACHE_MONT_P  0x01
+ 
+ #ifdef  __cplusplus
+@@ -200,6 +204,7 @@ void ERR_load_DH_strings(void);
+ /* Reason codes. */
+ #define DH_R_BAD_GENERATOR                             101
+ #define DH_R_NO_PRIVATE_VALUE                          100
++#define DH_R_MODULUS_TOO_LARGE                                 103
+ 
+ #ifdef  __cplusplus
+ }
+diff -uNrp openssl-0.9.7g.orig/crypto/dh/dh_key.c 
openssl-0.9.7g/crypto/dh/dh_key.c
+--- crypto/dh/dh_key.c 2004-06-19 15:15:34.000000000 +0200
++++ crypto/dh/dh_key.c 2006-09-26 18:34:15.000000000 +0200
+@@ -164,6 +164,12 @@ static int compute_key(unsigned char *ke
+       BIGNUM *tmp;
+       int ret= -1;
+ 
++      if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS)
++              {
++              DHerr(DH_F_DH_COMPUTE_KEY,DH_R_MODULUS_TOO_LARGE);
++              goto err;
++              }
++
+       ctx = BN_CTX_new();
+       if (ctx == NULL) goto err;
+       BN_CTX_start(ctx);
+diff -uNrp openssl-0.9.7g.orig/crypto/dsa/dsa_err.c 
openssl-0.9.7g/crypto/dsa/dsa_err.c
+--- crypto/dsa/dsa_err.c       2002-03-09 19:24:08.000000000 +0100
++++ crypto/dsa/dsa_err.c       2006-09-26 18:40:49.000000000 +0200
+@@ -85,8 +85,10 @@ static ERR_STRING_DATA DSA_str_functs[]=
+ 
+ static ERR_STRING_DATA DSA_str_reasons[]=
+       {
++{DSA_R_BAD_Q_VALUE                       ,"bad q value"},
+ {DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE       ,"data too large for key size"},
+ {DSA_R_MISSING_PARAMETERS                ,"missing parameters"},
++{DSA_R_MODULUS_TOO_LARGE                 ,"modulus too large"},
+ {0,NULL}
+       };
+ 
+diff -uNrp openssl-0.9.7g.orig/crypto/dsa/dsa.h openssl-0.9.7g/crypto/dsa/dsa.h
+--- crypto/dsa/dsa.h   2004-05-19 16:16:33.000000000 +0200
++++ crypto/dsa/dsa.h   2006-09-26 18:34:15.000000000 +0200
+@@ -79,6 +79,10 @@
+ # include <openssl/dh.h>
+ #endif
+ 
++#ifndef OPENSSL_DSA_MAX_MODULUS_BITS
++# define OPENSSL_DSA_MAX_MODULUS_BITS 10000
++#endif
++
+ #define DSA_FLAG_CACHE_MONT_P 0x01
+ 
+ #if defined(OPENSSL_FIPS)
+@@ -245,8 +249,10 @@ void ERR_load_DSA_strings(void);
+ #define DSA_F_SIG_CB                                   114
+ 
+ /* Reason codes. */
++#define DSA_R_BAD_Q_VALUE                              102
+ #define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE              100
+ #define DSA_R_MISSING_PARAMETERS                       101
++#define DSA_R_MODULUS_TOO_LARGE                                103
+ 
+ #ifdef  __cplusplus
+ }
+diff -uNrp openssl-0.9.7g.orig/crypto/dsa/dsa_ossl.c 
openssl-0.9.7g/crypto/dsa/dsa_ossl.c
+--- crypto/dsa/dsa_ossl.c      2004-05-11 14:45:16.000000000 +0200
++++ crypto/dsa/dsa_ossl.c      2006-09-26 18:34:15.000000000 +0200
+@@ -245,6 +245,18 @@ static int dsa_do_verify(const unsigned 
+               return -1;
+               }
+ 
++      if (BN_num_bits(dsa->q) != 160)
++              {
++              DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_BAD_Q_VALUE);
++              return -1;
++              }
++
++      if (BN_num_bits(dsa->p) > OPENSSL_DSA_MAX_MODULUS_BITS)
++              {
++              DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_MODULUS_TOO_LARGE);
++              return -1;
++              }
++
+       BN_init(&u1);
+       BN_init(&u2);
+       BN_init(&t1);
+diff -uNrp openssl-0.9.7g.orig/crypto/rsa/rsa_eay.c 
openssl-0.9.7g/crypto/rsa/rsa_eay.c
+--- crypto/rsa/rsa_eay.c       2004-05-11 14:45:46.000000000 +0200
++++ crypto/rsa/rsa_eay.c       2006-09-26 19:12:37.000000000 +0200
+@@ -104,6 +104,28 @@ static int RSA_eay_public_encrypt(int fl
+       unsigned char *buf=NULL;
+       BN_CTX *ctx=NULL;
+ 
++      if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS)
++              {
++              RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_MODULUS_TOO_LARGE);
++              return -1;
++              }
++
++      if (BN_ucmp(rsa->n, rsa->e) <= 0)
++              {
++              RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_BAD_E_VALUE);
++              return -1;
++              }
++
++      /* for large moduli, enforce exponent limit */
++      if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS)
++              {
++              if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS)
++                      {
++                      RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_BAD_E_VALUE);
++                      return -1;
++                      }
++              }
++      
+       BN_init(&f);
+       BN_init(&ret);
+       if ((ctx=BN_CTX_new()) == NULL) goto err;
+@@ -504,6 +526,28 @@ static int RSA_eay_public_decrypt(int fl
+       unsigned char *buf=NULL;
+       BN_CTX *ctx=NULL;
+ 
++      if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS)
++              {
++              RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_MODULUS_TOO_LARGE);
++              return -1;
++              }
++
++      if (BN_ucmp(rsa->n, rsa->e) <= 0)
++              {
++              RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_BAD_E_VALUE);
++              return -1;
++              }
++
++      /* for large moduli, enforce exponent limit */
++      if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS)
++              {
++              if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS)
++                      {
++                      RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_BAD_E_VALUE);
++                      return -1;
++                      }
++              }
++      
+       BN_init(&f);
+       BN_init(&ret);
+       ctx=BN_CTX_new();
+diff -uNrp openssl-0.9.7g.orig/crypto/rsa/rsa_err.c 
openssl-0.9.7g/crypto/rsa/rsa_err.c
+--- crypto/rsa/rsa_err.c       2001-07-25 19:02:58.000000000 +0200
++++ crypto/rsa/rsa_err.c       2006-09-26 19:14:35.000000000 +0200
+@@ -116,6 +116,7 @@ static ERR_STRING_DATA RSA_str_reasons[]
+ {RSA_R_INVALID_MESSAGE_LENGTH            ,"invalid message length"},
+ {RSA_R_IQMP_NOT_INVERSE_OF_Q             ,"iqmp not inverse of q"},
+ {RSA_R_KEY_SIZE_TOO_SMALL                ,"key size too small"},
++{RSA_R_MODULUS_TOO_LARGE                 ,"modulus too large"},
+ {RSA_R_NULL_BEFORE_BLOCK_MISSING         ,"null before block missing"},
+ {RSA_R_N_DOES_NOT_EQUAL_P_Q              ,"n does not equal p q"},
+ {RSA_R_OAEP_DECODING_ERROR               ,"oaep decoding error"},
+diff -uNrp openssl-0.9.7g.orig/crypto/rsa/rsa.h openssl-0.9.7g/crypto/rsa/rsa.h
+--- crypto/rsa/rsa.h   2004-05-19 16:16:32.000000000 +0200
++++ crypto/rsa/rsa.h   2006-09-26 18:42:30.000000000 +0200
+@@ -154,6 +154,17 @@ struct rsa_st
+       BN_BLINDING *blinding;
+       };
+ 
++#ifndef OPENSSL_RSA_MAX_MODULUS_BITS
++# define OPENSSL_RSA_MAX_MODULUS_BITS 16384
++#endif
++
++#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS
++# define OPENSSL_RSA_SMALL_MODULUS_BITS       3072
++#endif
++#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS
++# define OPENSSL_RSA_MAX_PUBEXP_BITS  64 /* exponent limit enforced for 
"small" modulus only */
++#endif
++
+ #define RSA_3 0x3L
+ #define RSA_F4        0x10001L
+ 
+@@ -347,6 +358,7 @@ void ERR_load_RSA_strings(void);
+ #define RSA_R_INVALID_MESSAGE_LENGTH                   131
+ #define RSA_R_IQMP_NOT_INVERSE_OF_Q                    126
+ #define RSA_R_KEY_SIZE_TOO_SMALL                       120
++#define RSA_R_MODULUS_TOO_LARGE                                105
+ #define RSA_R_NULL_BEFORE_BLOCK_MISSING                        113
+ #define RSA_R_N_DOES_NOT_EQUAL_P_Q                     127
+ #define RSA_R_OAEP_DECODING_ERROR                      121

Added: 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2937.patch
==============================================================================
--- (empty file)
+++ 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2937.patch
   Tue Feb  6 14:43:38 2007
@@ -0,0 +1,12 @@
+--- openssl-0.9.7g/crypto/asn1/tasn_dec.c.cve-2006-2937        2003-09-30 
06:05:43.000000000 -0600
++++ openssl-0.9.7g/crypto/asn1/tasn_dec.c      2006-09-26 14:42:36.000000000 
-0600
+@@ -628,6 +628,9 @@ static int asn1_d2i_ex_primitive(ASN1_VA
+               ASN1err(ASN1_F_ASN1_D2I_EX_PRIMITIVE, ERR_R_NESTED_ASN1_ERROR);
+               return 0;
+       } else if(ret == -1) return -1;
++
++      ret = 0;
++      
+       /* SEQUENCE, SET and "OTHER" are left in encoded form */
+       if((utype == V_ASN1_SEQUENCE) || (utype == V_ASN1_SET) || (utype == 
V_ASN1_OTHER)) {
+               /* Clear context cache for type OTHER because the auto clear 
when

Added: 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2940-2.patch
==============================================================================
--- (empty file)
+++ 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-2940-2.patch
 Tue Feb  6 14:43:38 2007
@@ -0,0 +1,13 @@
+--- openssl-0.9.7g/crypto/dh/dh_key.c.cve-2006-2940-2  2006-09-29 
09:14:30.000000000 -0600
++++ openssl-0.9.7g/crypto/dh/dh_key.c  2006-09-29 09:18:29.000000000 -0600
+@@ -159,8 +159,8 @@ err:
+ 
+ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
+       {
+-      BN_CTX *ctx;
+-      BN_MONT_CTX *mont;
++      BN_CTX *ctx = NULL ;
++      BN_MONT_CTX *mont = NULL;
+       BIGNUM *tmp;
+       int ret= -1;
+ 

Added: 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-3738.patch
==============================================================================
--- (empty file)
+++ 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-0.9.7g-CVE-2006-3738.patch
   Tue Feb  6 14:43:38 2007
@@ -0,0 +1,22 @@
+--- openssl-0.9.7g/ssl/ssl_lib.c.cve-2006-3738 2005-03-23 01:21:30.000000000 
-0700
++++ openssl-0.9.7g/ssl/ssl_lib.c       2006-09-26 14:32:41.000000000 -0600
+@@ -1167,7 +1167,7 @@ char *SSL_get_shared_ciphers(const SSL *
+               c=sk_SSL_CIPHER_value(sk,i);
+               for (cp=c->name; *cp; )
+                       {
+-                      if (len-- == 0)
++                      if (len-- <= 0)
+                               {
+                               *p='\0';
+                               return(buf);
+--- openssl-0.9.7g/ssl/s3_srvr.c.cve-2006-3738 2006-09-26 14:33:51.000000000 
-0600
++++ openssl-0.9.7g/ssl/s3_srvr.c       2006-09-26 14:35:36.000000000 -0600
+@@ -1727,7 +1727,7 @@ static int ssl3_get_client_key_exchange(
+ 
+                 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;

Added: 
packages/cooker/uClibc-openssl/current/SOURCES/openssl-CVE-2006-4343.patch
==============================================================================
--- (empty file)
+++ packages/cooker/uClibc-openssl/current/SOURCES/openssl-CVE-2006-4343.patch  
Tue Feb  6 14:43:38 2007
@@ -0,0 +1,17 @@
+Tavis Ormandy and Will Drewry of the Google Security Team discovered a 
+possible DoS in the sslv2 client code.  Where a client application uses 
+OpenSSL to make a SSLv2 connection to a malicious server that server 
+could cause the client to crash.  CVE-2006-4343
+
+--- ssl/s2_clnt.c      2005-08-06 00:52:07.000000000 +0100
++++ ssl/s2_clnt.c      2006-08-28 19:14:59.398605000 +0100
+@@ -520,7 +520,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);

Modified: packages/cooker/uClibc-openssl/current/SPECS/uClibc-openssl.spec
==============================================================================
--- packages/cooker/uClibc-openssl/current/SPECS/uClibc-openssl.spec    
(original)
+++ packages/cooker/uClibc-openssl/current/SPECS/uClibc-openssl.spec    Tue Feb 
 6 14:43:38 2007
@@ -20,7 +20,7 @@
 Summary:       Secure Sockets Layer communications libs & utils
 Name:          uClibc-openssl
 Version:       0.9.7g
-Release:       %mkrel 1
+Release:       %mkrel 2
 License:       BSD-like
 Group:         System/Libraries
 URL:           http://www.openssl.org/
@@ -39,6 +39,11 @@
 Patch7:                openssl-0.9.7-CAN-2005-2969.patch
 Patch8:                openssl-0.9.7-CAN-2005-2946.patch
 Patch9:                openssl-CVE-2006-4339.patch
+Patch10:       openssl-0.9.7-CVE-2006-2940.patch
+Patch11:       openssl-CVE-2006-4343.patch
+Patch12:       openssl-0.9.7g-CVE-2006-3738.patch
+Patch13:       openssl-0.9.7g-CVE-2006-2937.patch
+Patch14:       openssl-0.9.7g-CVE-2006-2940-2.patch
 Requires:      %libname = %version-%release
 Requires:      /usr/bin/perl
 BuildRequires: uClibc uClibc-devel uClibc-static-devel
@@ -123,6 +128,11 @@
 %patch7 -p1 -b .can-2005-2969
 %patch8 -p1 -b .can-2005-2946
 %patch9 -p0 -b .cve-2006-4339
+%patch10 -p0 -b .cve-2006-2940
+%patch11 -p0 -b .cve-2006-4343
+%patch12 -p1 -b .cve-2006-3738
+%patch13 -p1 -b .cve-2006-2937
+%patch14 -p1 -b .cve-2006-2940-2
 
 #perl -pi -e "s,^(LIB=).+$,\1%{_lib}," Makefile.org
 

Reply via email to