Add a compile time test to verify that openssl/rsa.h and complex.h can
authorPauli <paul.dale@oracle.com>
Sun, 16 Sep 2018 22:09:25 +0000 (08:09 +1000)
committerPauli <paul.dale@oracle.com>
Sun, 16 Sep 2018 23:44:45 +0000 (09:44 +1000)
coexist.

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7233)

(cherry picked from commit da5fac72b1cba5651b871902eea234e693cf01e5)

.gitignore
test/build.info
test/rsa_complex.c [new file with mode: 0644]

index d618cd692b56a06a9fc3e894371cb37aa9e76d07..1b0f25cc81b25b1e3067022deb70465105ae7c30 100644 (file)
@@ -59,6 +59,7 @@ Makefile
 /test/v3ext
 /test/versions
 /test/ossl_shim/ossl_shim
+/test/rsa_complex
 
 # Certain files that get created by tests on the fly
 /test/test-runs
index 08657c801158b80debe348a613f9c709038b9075..df448d09a8aa0717324a0401aa5d0638418b87c0 100644 (file)
@@ -26,7 +26,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN
   PROGRAMS_NO_INST=\
           versions \
           aborttest test_test \
-          sanitytest exdatatest bntest \
+          sanitytest rsa_complex exdatatest bntest \
           ectest ecstresstest ecdsatest gmdifftest pbelutest ideatest \
           md2test \
           hmactest \
@@ -64,6 +64,9 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN
   INCLUDE[sanitytest]=../include
   DEPEND[sanitytest]=../libcrypto libtestutil.a
 
+  SOURCE[rsa_complex]=rsa_complex.c
+  INCLUDE[rsa_complex]=../include
+
   SOURCE[test_test]=test_test.c
   INCLUDE[test_test]=../include
   DEPEND[test_test]=../libcrypto libtestutil.a
diff --git a/test/rsa_complex.c b/test/rsa_complex.c
new file mode 100644 (file)
index 0000000..fac5812
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+/*
+ * Check to see if there is a conflict between complex.h and openssl/rsa.h.
+ * The former defines "I" as a macro and earlier versions of the latter use
+ * for function arguments.
+ */
+#if defined(__STDC_VERSION__)
+# if __STDC_VERSION__ >= 199901L
+#  include <complex.h>
+# endif
+#endif
+#include <openssl/rsa.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[])
+{
+    /* There are explicitly no run time checks for this one */
+    return EXIT_SUCCESS;
+}