switch (c1*3+c2) {
case -4:
bn_sub_words(t, &(a[n]),a, n); /* - */
bn_sub_words(&(t[n]),b, &(b[n]),n); /* - */
break;
case -3:
......
The issue is that c1 and c2 are of type unsigned int.
The expression being switched on will never be negative,
so it is strange to have negative cases. I guess the -4 gets
interpreted as an unsigned or something strange.
If this is what was intended, my apologies for questioning
the code, but I thought it might be unintentional as it looks
like this code may have been pasted from elsewhere in the file.
bn_mul_recursive and bn_mul_high have similar switch statements,
but the variables there are signed.
Although, I am using 0.9.6b, I believe
this same code exists in the current CVS tree (I checked it
earlier today), but at a slightly different line.
-Ivan Nestlerode
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List opens...@openssl.org
Automated List Manager majo...@openssl.org