From f778cd2d89b3dfb2438df44f42e5a9082b213a71 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 14 Mar 2018 17:31:20 +0100 Subject: [PATCH] Stop test/shlibloadtest.c from failing in a regression test When doing a regression test, it's obvious that the version test/shlibloadtest is built for will not be the same as the library version. So we change the test to check for assumed compatibility. Reviewed-by: Andy Polyakov (Merged from https://github.com/openssl/openssl/pull/5620) --- test/shlibloadtest.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/test/shlibloadtest.c b/test/shlibloadtest.c index 6f220ba530..6dae1118ae 100644 --- a/test/shlibloadtest.c +++ b/test/shlibloadtest.c @@ -196,7 +196,21 @@ int main(int argc, char **argv) return 1; } - if (OpenSSL_version_num() != OPENSSL_VERSION_NUMBER) { + /* + * The bits that COMPATIBILITY_MASK lets through MUST be the same in + * the library and in the application. + * The bits that are masked away MUST be a larger or equal number in + * the library compared to the application. + */ +# define COMPATIBILITY_MASK 0xfff00000L + if ((OpenSSL_version_num() & COMPATIBILITY_MASK) + != (OPENSSL_VERSION_NUMBER & COMPATIBILITY_MASK)) { + printf("Unexpected library version loaded\n"); + return 1; + } + + if ((OpenSSL_version_num() & ~COMPATIBILITY_MASK) + < (OPENSSL_VERSION_NUMBER & ~COMPATIBILITY_MASK)) { printf("Unexpected library version loaded\n"); return 1; } -- 2.25.1