avoid potential infinite loop in final reduction round of BN_GF2m_mod_arr()
authorBodo Möller <bodo@openssl.org>
Mon, 23 Jun 2008 20:46:24 +0000 (20:46 +0000)
committerBodo Möller <bodo@openssl.org>
Mon, 23 Jun 2008 20:46:24 +0000 (20:46 +0000)
Submitted by: Huang Ying
Reviewed by: Douglas Stebila

CHANGES
crypto/bn/bn_gf2m.c

diff --git a/CHANGES b/CHANGES
index b0359e5..f2e4487 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
  Changes between 0.9.8h and 0.9.8i  [xx XXX xxxx]
 
+  *) Fix BN_GF2m_mod_arr() top-bit cleanup code.
+     [Huang Ying]
+
   *) Expand ENGINE to support engine supplied SSL client certificate functions.
 
      This work was sponsored by Logica.
      [Steve Henson]
 
-  *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows         keystores. Support for SSL/TLS client authentication too.
+  *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows
+     keystores. Support for SSL/TLS client authentication too.
      Not compiled unless enable-capieng specified to Configure.
 
      This work was sponsored by Logica.
index be409e1..f7551da 100644 (file)
@@ -322,7 +322,11 @@ int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[])
                if (zz == 0) break;
                d1 = BN_BITS2 - d0;
                
-               if (d0) z[dN] = (z[dN] << d1) >> d1; /* clear up the top d1 bits */
+               /* clear up the top d1 bits */
+               if (d0)
+                       z[dN] = (z[dN] << d1) >> d1;
+               else
+                       z[dN] = 0;
                z[0] ^= zz; /* reduction t^0 component */
 
                for (k = 1; p[k] != 0; k++)