Author: delphij
Date: Wed Jan 16 00:52:36 2013
New Revision: 245483
URL: http://svnweb.freebsd.org/changeset/base/245483

Log:
  MFC r244974:
  
  MFV r244973:
  
    Integrate OpenSSL changeset 22950 (appro):
  
          bn_word.c: fix overflow bug in BN_add_word.

Modified:
  stable/8/crypto/openssl/crypto/bn/bn_word.c
Directory Properties:
  stable/8/crypto/openssl/   (props changed)

Modified: stable/8/crypto/openssl/crypto/bn/bn_word.c
==============================================================================
--- stable/8/crypto/openssl/crypto/bn/bn_word.c Wed Jan 16 00:45:05 2013        
(r245482)
+++ stable/8/crypto/openssl/crypto/bn/bn_word.c Wed Jan 16 00:52:36 2013        
(r245483)
@@ -144,26 +144,17 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
                        a->neg=!(a->neg);
                return(i);
                }
-       /* Only expand (and risk failing) if it's possibly necessary */
-       if (((BN_ULONG)(a->d[a->top - 1] + 1) == 0) &&
-                       (bn_wexpand(a,a->top+1) == NULL))
-               return(0);
-       i=0;
-       for (;;)
+       for (i=0;w!=0 && i<a->top;i++)
                {
-               if (i >= a->top)
-                       l=w;
-               else
-                       l=(a->d[i]+w)&BN_MASK2;
-               a->d[i]=l;
-               if (w > l)
-                       w=1;
-               else
-                       break;
-               i++;
+               a->d[i] = l = (a->d[i]+w)&BN_MASK2;
+               w = (w>l)?1:0;
                }
-       if (i >= a->top)
+       if (w && i==a->top)
+               {
+               if (bn_wexpand(a,a->top+1) == NULL) return 0;
                a->top++;
+               a->d[i]=w;
+               }
        bn_check_top(a);
        return(1);
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to