mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-29 00:34:33 +02:00
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@
This commit is contained in:
parent
0e9e2663eb
commit
b7afd8a4ec
@ -33,10 +33,10 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenSSL version numbers: MNNFFPPS: major minor fix patch status
|
* OpenSSL version numbers: MNNFFPPS: major minor fix patch status
|
||||||
* We match major, minor, fix and status (not patch) for <1.0.0.
|
* Versions >=3 require only major versions to match.
|
||||||
* After that, we acceptable compatible fix versions (so we
|
* For versions <3, we accept compatible fix versions (so we allow 1.0.1
|
||||||
* allow 1.0.1 to work with 1.0.0). Going backwards is only allowed
|
* to work with 1.0.0). Going backwards is only allowed within a patch series.
|
||||||
* within a patch series.
|
* See https://www.openssl.org/policies/releasestrat.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -48,15 +48,17 @@ ssh_compatible_openssl(long headerver, long libver)
|
|||||||
if (headerver == libver)
|
if (headerver == libver)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* for versions < 1.0.0, major,minor,fix,status must match */
|
/*
|
||||||
if (headerver < 0x1000000f) {
|
* For versions >= 3.0, only the major and status must match.
|
||||||
mask = 0xfffff00fL; /* major,minor,fix,status */
|
*/
|
||||||
|
if (headerver >= 0x3000000f) {
|
||||||
|
mask = 0xf000000fL; /* major,status */
|
||||||
return (headerver & mask) == (libver & mask);
|
return (headerver & mask) == (libver & mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For versions >= 1.0.0, major,minor,status must match and library
|
* For versions >= 1.0.0, but <3, major,minor,status must match and
|
||||||
* fix version must be equal to or newer than the header.
|
* library fix version must be equal to or newer than the header.
|
||||||
*/
|
*/
|
||||||
mask = 0xfff0000fL; /* major,minor,status */
|
mask = 0xfff0000fL; /* major,minor,status */
|
||||||
hfix = (headerver & 0x000ff000) >> 12;
|
hfix = (headerver & 0x000ff000) >> 12;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user