diff options
author | Darren Tucker <dtucker@dtucker.net> | 2023-05-08 12:12:59 +0200 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2023-05-08 12:12:59 +0200 |
commit | b7afd8a4ecaca8afd3179b55e9db79c0ff210237 (patch) | |
tree | 6e5ce9a2d98a2393bd2bbd7e563676f15839c2d4 /openbsd-compat | |
parent | upstream: Import regenerated moduli. (diff) | |
download | openssh-b7afd8a4ecaca8afd3179b55e9db79c0ff210237.tar.xz openssh-b7afd8a4ecaca8afd3179b55e9db79c0ff210237.zip |
Handle OpenSSL >=3 ABI compatibility.
Beyond OpenSSL 3.0, the ABI compatibility guarantees are wider (only
major must match instead of major and minor in earlier versions).
bz#3548, ok djm@
Diffstat (limited to 'openbsd-compat')
-rw-r--r-- | openbsd-compat/openssl-compat.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c index a37ca61bf..6c65003f2 100644 --- a/openbsd-compat/openssl-compat.c +++ b/openbsd-compat/openssl-compat.c @@ -33,10 +33,10 @@ /* * OpenSSL version numbers: MNNFFPPS: major minor fix patch status - * We match major, minor, fix and status (not patch) for <1.0.0. - * After that, we acceptable compatible fix versions (so we - * allow 1.0.1 to work with 1.0.0). Going backwards is only allowed - * within a patch series. + * Versions >=3 require only major versions to match. + * For versions <3, we accept compatible fix versions (so we allow 1.0.1 + * to work with 1.0.0). Going backwards is only allowed within a patch series. + * See https://www.openssl.org/policies/releasestrat.html */ int @@ -48,15 +48,17 @@ ssh_compatible_openssl(long headerver, long libver) if (headerver == libver) return 1; - /* for versions < 1.0.0, major,minor,fix,status must match */ - if (headerver < 0x1000000f) { - mask = 0xfffff00fL; /* major,minor,fix,status */ + /* + * For versions >= 3.0, only the major and status must match. + */ + if (headerver >= 0x3000000f) { + mask = 0xf000000fL; /* major,status */ return (headerver & mask) == (libver & mask); } /* - * For versions >= 1.0.0, major,minor,status must match and library - * fix version must be equal to or newer than the header. + * For versions >= 1.0.0, but <3, major,minor,status must match and + * library fix version must be equal to or newer than the header. */ mask = 0xfff0000fL; /* major,minor,status */ hfix = (headerver & 0x000ff000) >> 12; |