aboutsummaryrefslogtreecommitdiff
path: root/openssl/crypto/bn/bn.h
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/crypto/bn/bn.h')
-rw-r--r--openssl/crypto/bn/bn.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/openssl/crypto/bn/bn.h b/openssl/crypto/bn/bn.h
index e484b7fc1..a0bc47837 100644
--- a/openssl/crypto/bn/bn.h
+++ b/openssl/crypto/bn/bn.h
@@ -253,6 +253,24 @@ extern "C" {
#define BN_HEX_FMT2 "%08X"
#endif
+/* 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] */
+#else /* defined(OPENSSL_SYS_VMS) */
+# define PTR_SIZE_INT size_t
+#endif /* defined(OPENSSL_SYS_VMS) [else] */
+
#define BN_DEFAULT_BITS 1280
#define BN_FLG_MALLOCED 0x01