Discourage the use of LONG and ZLONG, and deprecate it in the future
authorRichard Levitte <levitte@openssl.org>
Wed, 5 Apr 2017 10:09:21 +0000 (12:09 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 10 Apr 2017 10:11:00 +0000 (12:11 +0200)
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3126)

crypto/asn1/x_long.c
include/openssl/asn1t.h

index 5895345..4bb6611 100644 (file)
@@ -11,6 +11,9 @@
 #include "internal/cryptlib.h"
 #include <openssl/asn1t.h>
 
+#if !(OPENSSL_API_COMPAT < 0x10200000L)
+NON_EMPTY_TRANSLATION_UNIT
+#else
 /*
  * Custom primitive type for long handling. This converts between an
  * ASN1_INTEGER and a long directly.
@@ -194,3 +197,4 @@ static int long_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it,
 {
     return BIO_printf(out, "%ld\n", *(long *)pval);
 }
+#endif
index 5d2ed43..a73d4a8 100644 (file)
@@ -909,8 +909,16 @@ DECLARE_ASN1_ITEM(INT64)
 DECLARE_ASN1_ITEM(ZINT64)
 DECLARE_ASN1_ITEM(UINT64)
 DECLARE_ASN1_ITEM(ZUINT64)
+
+# if OPENSSL_API_COMPAT < 0x10200000L
+/*
+ * LONG and ZLONG are strongly discouraged for use as stored data, as the
+ * underlying C type (long) differs in size depending on the architecture.
+ * They are designed with 32-bit longs in mind.
+ */
 DECLARE_ASN1_ITEM(LONG)
 DECLARE_ASN1_ITEM(ZLONG)
+# endif
 
 DEFINE_STACK_OF(ASN1_VALUE)