Commit 5a84b7fc authored by Andy Polyakov's avatar Andy Polyakov
Browse files

bn_mul_recursive doesn't handle all cases correctly, which results in

BN_mul failures at certain key-length mixes [from HEAD].
PR: 1427
parent d8e660a6
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -655,16 +655,16 @@ void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n,
				for (;;)
					{
					i/=2;
					if (i < tna && i < tnb)
					if (i <= tna && tna == tnb)
						{
						bn_mul_part_recursive(&(r[n2]),
						bn_mul_recursive(&(r[n2]),
							&(a[n]),&(b[n]),
							i,tna-i,tnb-i,p);
						break;
						}
					else if (i <= tna && i <= tnb)
					else if (i < tna || i < tnb)
						{
						bn_mul_recursive(&(r[n2]),
						bn_mul_part_recursive(&(r[n2]),
							&(a[n]),&(b[n]),
							i,tna-i,tnb-i,p);
						break;