diff options
author | aSoujyuTanaka <soujyu.tanaka@access-company.com> | 2020-04-11 20:58:44 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-07-15 23:03:22 +0200 |
commit | 7a09fab2b3d201062a2cc07c1a40d09d61ea31bd (patch) | |
tree | c03de73fad84e41b49ee8bb8030fa1d689c186d8 /crypto/bn | |
parent | Changed uintptr_t to size_t. WinCE6 doesn't seem it have the definition. (diff) | |
download | openssl-7a09fab2b3d201062a2cc07c1a40d09d61ea31bd.tar.xz openssl-7a09fab2b3d201062a2cc07c1a40d09d61ea31bd.zip |
Disable optimiization of BN_num_bits_word() for VS2005 ARM compiler due to
its miscompilation of the function.
https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html
Reviewed-by: Mark J. Cox <mark@awe.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11526)
Diffstat (limited to 'crypto/bn')
-rw-r--r-- | crypto/bn/bn_lib.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 57783e47d8..13a52ccb29 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -88,6 +88,15 @@ const BIGNUM *BN_value_one(void) return &const_one; } +/* + * Old Visual Studio ARM compiler miscompiles BN_num_bits_word() + * https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html + */ +#if defined(_MSC_VER) && defined(_ARM_) && defined(_WIN32_WCE) \ + && _MSC_VER>=1400 && _MSC_VER<1501 +# define MS_BROKEN_BN_num_bits_word +# pragma optimize("", off) +#endif int BN_num_bits_word(BN_ULONG l) { BN_ULONG x, mask; @@ -132,6 +141,9 @@ int BN_num_bits_word(BN_ULONG l) return bits; } +#ifdef MS_BROKEN_BN_num_bits_word +# pragma optimize("", on) +#endif /* * This function still leaks `a->dmax`: it's caller's responsibility to |