Stop test/shlibloadtest.c from failing in a regression test
authorRichard Levitte <levitte@openssl.org>
Wed, 14 Mar 2018 16:31:20 +0000 (17:31 +0100)
committerRichard Levitte <levitte@openssl.org>
Mon, 19 Mar 2018 06:03:23 +0000 (07:03 +0100)
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 <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5620)

test/shlibloadtest.c

index 6f220ba5302795cdc1b1af87b7bcf9882dd76dab..6dae1118ae9e8654d00de30aa116eead22561802 100644 (file)
@@ -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;
     }