Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Jan 2013 20:58:46 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r244974 - head/crypto/openssl/crypto/bn
Message-ID:  <201301022058.r02Kwk9b061953@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Wed Jan  2 20:58:46 2013
New Revision: 244974
URL: http://svnweb.freebsd.org/changeset/base/244974

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

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

Modified: head/crypto/openssl/crypto/bn/bn_word.c
==============================================================================
--- head/crypto/openssl/crypto/bn/bn_word.c	Wed Jan  2 20:56:53 2013	(r244973)
+++ head/crypto/openssl/crypto/bn/bn_word.c	Wed Jan  2 20:58:46 2013	(r244974)
@@ -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);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301022058.r02Kwk9b061953>