python310/python311: fix failing tests with openssl >= 3.4

This commit is contained in:
Luka Blašković
2025-02-17 10:40:59 +00:00
parent bd4cd0aee8
commit 964b5727cb
2 changed files with 37 additions and 0 deletions
@@ -0,0 +1,28 @@
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index e637830..80728d2 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -656,6 +656,11 @@ PySSL_SetError(PySSLSocket *sslsock, int ret, const char *filename, int lineno)
errstr = "Some I/O error occurred";
}
} else {
+ if (ERR_GET_LIB(e) == ERR_LIB_SYS) {
+ // A system error is being reported; reason is set to errno
+ errno = ERR_GET_REASON(e);
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
p = PY_SSL_ERROR_SYSCALL;
}
break;
@@ -681,6 +686,11 @@ PySSL_SetError(PySSLSocket *sslsock, int ret, const char *filename, int lineno)
errstr = "EOF occurred in violation of protocol";
}
#endif
+ if (ERR_GET_LIB(e) == ERR_LIB_SYS) {
+ // A system error is being reported; reason is set to errno
+ errno = ERR_GET_REASON(e);
+ return PyErr_SetFromErrno(PyExc_OSError);
+ }
break;
}
default:
@@ -299,6 +299,15 @@ in with passthru; stdenv.mkDerivation (finalAttrs: {
] ++ optionals (pythonOlder "3.12") [
# https://github.com/python/cpython/issues/90656
./loongarch-support.patch
# fix failing tests with openssl >= 3.4
# https://github.com/python/cpython/pull/127361
] ++ optionals (pythonAtLeast "3.10" && pythonOlder "3.11") [
./3.10/raise-OSError-for-ERR_LIB_SYS.patch
] ++ optionals (pythonAtLeast "3.11" && pythonOlder "3.12") [
(fetchpatch {
url = "https://github.com/python/cpython/commit/f4b31edf2d9d72878dab1f66a36913b5bcc848ec.patch";
sha256 = "sha256-w7zZMp0yqyi4h5oG8sK4z9BwNEkqg4Ar+en3nlWcxh0=";
})
] ++ optionals (pythonAtLeast "3.11" && pythonOlder "3.13") [
# backport fix for https://github.com/python/cpython/issues/95855
./platform-triplet-detection.patch