summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorPauli <paul.dale@oracle.com>2018-09-17 08:09:25 +1000
committerPauli <paul.dale@oracle.com>2018-09-17 09:14:03 +1000
commitda5fac72b1cba5651b871902eea234e693cf01e5 (patch)
treefe3ae2abd38c7d5580f624aba88b6dfc7dcbaf94 /test
parent972f67889b5a10c33dbc3d500cfa65b544e68b46 (diff)
Add a compile time test to verify that openssl/rsa.h and complex.h can
coexist. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/7233)
Diffstat (limited to 'test')
-rw-r--r--test/build.info5
-rw-r--r--test/rsa_complex.c27
2 files changed, 31 insertions, 1 deletions
diff --git a/test/build.info b/test/build.info
index fa154f07ee..c0b8ecee20 100644
--- a/test/build.info
+++ b/test/build.info
@@ -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
index 0000000000..fac581254a
--- /dev/null
+++ b/test/rsa_complex.c
@@ -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;
+}