diff options
author | Andy Polyakov <appro@openssl.org> | 2012-07-02 13:27:30 +0000 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2012-07-02 13:27:30 +0000 |
commit | 8d00f342397c3cbce7346c6afa6ea188cc938a9a (patch) | |
tree | 8a6932079a61a3e3f6f03f33d6dc2a018b5a6879 /crypto/bn/bn_lcl.h | |
parent | df538201700ad666742c71eca757dbd0e7612405 (diff) | |
download | openssl-8d00f342397c3cbce7346c6afa6ea188cc938a9a.tar.gz |
crypto/bn/*.h: move PTR_SIZE_INT to private header.
Diffstat (limited to 'crypto/bn/bn_lcl.h')
-rw-r--r-- | crypto/bn/bn_lcl.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h index ce085b5d3f..74cea91c1c 100644 --- a/crypto/bn/bn_lcl.h +++ b/crypto/bn/bn_lcl.h @@ -210,6 +210,24 @@ extern "C" { #define BN_MUL_LOW_RECURSIVE_SIZE_NORMAL (32) /* 32 */ #define BN_MONT_CTX_SET_SIZE_WORD (64) /* 32 */ +/* 2011-02-22 SMS. + * In various places, a size_t variable or a type cast to size_t was + * used to perform integer-only operations on pointers. This failed on + * VMS with 64-bit pointers (CC /POINTER_SIZE = 64) because size_t is + * still only 32 bits. What's needed in these cases is an integer type + * with the same size as a pointer, which size_t is not certain to be. + * The only fix here is VMS-specific. + */ +#if defined(OPENSSL_SYS_VMS) +# if __INITIAL_POINTER_SIZE == 64 +# define PTR_SIZE_INT long long +# else /* __INITIAL_POINTER_SIZE == 64 */ +# define PTR_SIZE_INT int +# endif /* __INITIAL_POINTER_SIZE == 64 [else] */ +#elif !defined(PTR_SIZE_INT) /* defined(OPENSSL_SYS_VMS) */ +# define PTR_SIZE_INT size_t +#endif /* defined(OPENSSL_SYS_VMS) [else] */ + #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC) /* * BN_UMULT_HIGH section. |