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)
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;
}