Commit 9dde17e8 authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

This rewrites two "for" loops in BN_rshift() - equality with zero is

generally a more efficient comparison than comparing two integers, and the
first of these two loops was off-by-one (copying one too many values). This
change also removes a superfluous assignment that would set an unused word
to zero (and potentially allow an overrun in some cases).

Submitted by: Nils Larsch
Reviewed by: Geoff Thorpe
parent 37af03d3
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -200,13 +200,13 @@ int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)

	if (rb == 0)
		{
		for (i=j+1; i > 0; i--)
		for (i=j; i != 0; i--)
			*(t++)= *(f++);
		}
	else
		{
		l= *(f++);
		for (i=1; i<j; i++)
		for (i=j-1; i != 0; i--)
			{
			tmp =(l>>rb)&BN_MASK2;
			l= *(f++);
@@ -214,7 +214,6 @@ int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
			}
		*(t++) =(l>>rb)&BN_MASK2;
		}
	*t=0;
	bn_correct_top(r);
	bn_check_top(r);
	return(1);