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:48:09 +0000 (09:48 +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 3dee3922a74ef377a636602817d833567bddc8ed..717aeb39c107233438cfb2cf932da2513c63e56c 100644 (file)
@@ -52,6 +52,7 @@ Makefile
 /test/x509aux
 /test/v3ext
 /test/versions
+/test/rsa_complex
 
 # Certain files that get created by tests on the fly
 /test/test-runs
index d850b5229cee63e750468b39a3236599722dbae6..2367ab841aec191b1c27fecdc4bb505bbe77dc0c 100644 (file)
@@ -2,7 +2,7 @@ IF[{- !$disabled{tests} -}]
   PROGRAMS_NO_INST=\
           versions \
           aborttest \
-          sanitytest exdatatest bntest \
+          sanitytest rsa_complex exdatatest bntest \
           ectest ecdsatest gmdifftest pbelutest ideatest \
           md2test md4test md5test \
           hmactest wp_test \
@@ -32,6 +32,9 @@ IF[{- !$disabled{tests} -}]
   INCLUDE[sanitytest]=../include
   DEPEND[sanitytest]=../libcrypto
 
+  SOURCE[rsa_complex]=rsa_complex.c
+  INCLUDE[rsa_complex]=../include
+
   SOURCE[exdatatest]=exdatatest.c
   INCLUDE[exdatatest]=../include
   DEPEND[exdatatest]=../libcrypto
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;
+}