From: Andy Polyakov Date: Sat, 27 Aug 2011 19:38:55 +0000 (+0000) Subject: bn_exp.c: improve portability. X-Git-Tag: OpenSSL-fips-2_0-rc1~195 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfdbff23ab4788fc49180b0b92404f7c986af01c;p=thirdparty%2Fopenssl.git bn_exp.c: improve portability. --- diff --git a/crypto/bn/bn_exp.c b/crypto/bn/bn_exp.c index 5b00aa1e3c5..aae00491db2 100644 --- a/crypto/bn/bn_exp.c +++ b/crypto/bn/bn_exp.c @@ -654,16 +654,21 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, numPowers = 1 << window; powerbufLen = sizeof(m->d[0])*(top*numPowers + (top>numPowers?top:numPowers)); +#ifdef alloca if (powerbufLen < 3072) powerbufFree = alloca(powerbufLen+MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH); - else if ((powerbufFree=(unsigned char*)OPENSSL_malloc(powerbufLen+MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH)) == NULL) + else +#endif + if ((powerbufFree=(unsigned char*)OPENSSL_malloc(powerbufLen+MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH)) == NULL) goto err; powerbuf = MOD_EXP_CTIME_ALIGN(powerbufFree); memset(powerbuf, 0, powerbufLen); +#ifdef alloca if (powerbufLen < 3072) powerbufFree = NULL; +#endif computeTemp.d = (BN_ULONG *)(powerbuf + sizeof(m->d[0])*top*numPowers); computeTemp.top = computeTemp.dmax = top;