mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #12440: When testing whether some bits in SSLContext.options can be
reset, check the version of the OpenSSL headers Python was compiled against, rather than the runtime version of the OpenSSL library.
This commit is contained in:
parent
6e2e3b9e81
commit
b9ac25d1c3
4 changed files with 32 additions and 10 deletions
|
@ -2037,6 +2037,24 @@ static struct PyModuleDef _sslmodule = {
|
|||
NULL
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
parse_openssl_version(unsigned long libver,
|
||||
unsigned int *major, unsigned int *minor,
|
||||
unsigned int *fix, unsigned int *patch,
|
||||
unsigned int *status)
|
||||
{
|
||||
*status = libver & 0xF;
|
||||
libver >>= 4;
|
||||
*patch = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
*fix = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
*minor = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
*major = libver & 0xFF;
|
||||
}
|
||||
|
||||
PyMODINIT_FUNC
|
||||
PyInit__ssl(void)
|
||||
{
|
||||
|
@ -2149,15 +2167,7 @@ PyInit__ssl(void)
|
|||
return NULL;
|
||||
if (PyModule_AddObject(m, "OPENSSL_VERSION_NUMBER", r))
|
||||
return NULL;
|
||||
status = libver & 0xF;
|
||||
libver >>= 4;
|
||||
patch = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
fix = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
minor = libver & 0xFF;
|
||||
libver >>= 8;
|
||||
major = libver & 0xFF;
|
||||
parse_openssl_version(libver, &major, &minor, &fix, &patch, &status);
|
||||
r = Py_BuildValue("IIIII", major, minor, fix, patch, status);
|
||||
if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION_INFO", r))
|
||||
return NULL;
|
||||
|
@ -2165,5 +2175,11 @@ PyInit__ssl(void)
|
|||
if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION", r))
|
||||
return NULL;
|
||||
|
||||
libver = OPENSSL_VERSION_NUMBER;
|
||||
parse_openssl_version(libver, &major, &minor, &fix, &patch, &status);
|
||||
r = Py_BuildValue("IIIII", major, minor, fix, patch, status);
|
||||
if (r == NULL || PyModule_AddObject(m, "_OPENSSL_API_VERSION", r))
|
||||
return NULL;
|
||||
|
||||
return m;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue