From: Christian Hesse <mail@eworm.de> When doing bitwise AND leading zeros do not matter, trailing ones do. Signed-off-by: Christian Hesse <mail@eworm.de> --- src/main/version.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/version.c b/src/main/version.c index 8b56ffa..dc5034c 100644 --- a/src/main/version.c +++ b/src/main/version.c @@ -54,6 +54,9 @@ int ssl_check_consistency(void) ssl_linked = SSLeay(); /* + * OpenSSL version number is described in ssleay(3) and consists of: + * MMNNFFPPS: major minor fix patch status + * * Status mismatch always triggers error. */ if ((ssl_linked & 0x00000000f) != (ssl_built & 0x00000000f)) { @@ -70,14 +73,14 @@ int ssl_check_consistency(void) * 1.0.0 and only allow moving backwards within a patch * series. */ - if (ssl_built & 0xff) { - if ((ssl_built & 0xffff) != (ssl_linked & 0xffff) || - (ssl_built & 0x0000ff) > (ssl_linked & 0x0000ff)) goto mismatch; + if (ssl_built & 0xff0000000 >= 0x010000000) { + if ((ssl_built & 0xffffff000) != (ssl_linked & 0xffffff000) || + (ssl_built & 0x000000ff0) > (ssl_linked & 0x000000ff0)) goto mismatch; /* * Before 1.0.0 we require the same major minor and fix version * and ignore the patch number. */ - } else if ((ssl_built & 0xffffff) != (ssl_linked & 0xffffff)) goto mismatch; + } else if ((ssl_built & 0xffffff000) != (ssl_linked & 0xffffff000)) goto mismatch; return 0; } -- 2.1.2