cpython/Modules
Miss Islington (bot) 13df5d3497
[3.11] GH-95494: Fix transport EOF handling in OpenSSL 3.0 (GH-95495) (#103006)
GH-25309 enabled SSL_OP_IGNORE_UNEXPECTED_EOF by default, with a comment
that it restores OpenSSL 1.1.1 behavior, but this wasn't quite right.
That option causes OpenSSL to treat transport EOF as the same as
close_notify (i.e. SSL_ERROR_ZERO_RETURN), whereas Python actually has
distinct SSLEOFError and SSLZeroReturnError exceptions. (The latter is
usually mapped to a zero return from read.) In OpenSSL 1.1.1, the ssl
module would raise them for transport EOF and close_notify,
respectively. In OpenSSL 3.0, both act like close_notify.

Fix this by, instead, just detecting SSL_R_UNEXPECTED_EOF_WHILE_READING
and mapping that to the other exception type.

There doesn't seem to have been any unit test of this error, so fill in
the missing one. This had to be done with the BIO path because it's
actually slightly tricky to simulate a transport EOF with Python's fd
based APIs. (If you instruct the server to close the socket, it gets
confused, probably because the server's SSL object is still referencing
the now dead fd?)
(cherry picked from commit 420bbb783b)

Co-authored-by: David Benjamin <davidben@google.com>
2023-03-27 16:14:01 +02:00
..
_blake2 [3.11] gh-102027: Fix macro name (GH-102124) (#102916) 2023-03-24 13:40:22 +01:00
_ctypes [3.11] gh-99952: fix refcount issues in ctypes.Structure from_param() result (#101339) 2023-01-26 01:02:37 -08:00
_decimal gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
_io gh-82052: Don't send partial UTF-8 sequences to the Windows API (GH-101103) 2023-01-17 11:52:50 -08:00
_multiprocessing GH-94736: Fix _multiprocessing.SemLock subclassing (GH-94738) 2022-07-11 05:40:02 -07:00
_sha3 bpo-47098: Replace Keccak Code Package with tiny_sha3 (GH-32060) 2022-03-26 21:36:08 +01:00
_sqlite [3.11] gh-95132: Correctly relay *args and **kwds from sqlite3.connect to factory (GH-95146) (#95158) 2022-07-23 10:23:19 +02:00
_sre gh-98740: Fix validation of conditional expressions in RE (GH-98764) 2022-11-03 00:47:39 -07:00
_ssl gh-91320: Argument Clinic uses _PyCFunction_CAST() (#32210) 2022-05-03 20:25:41 +02:00
_xxtestfuzz
cjkcodecs gh-91320: Argument Clinic uses _PyCFunction_CAST() (#32210) 2022-05-03 20:25:41 +02:00
clinic [3.11] Add missing 'is' to cmath.log() docstring (GH-102049) (#102279) 2023-02-26 14:55:44 +00:00
expat gh-98739: Update libexpat from 2.4.9 to 2.5.0 (GH-98742) 2022-10-27 14:21:35 -07:00
_abc.c [3.11] gh-95324: Emit a warning if an object doesn't call PyObject_GC_UnTrack during deallocation in debug mode (GH-95325) (#95336) 2022-07-27 16:55:44 +01:00
_asynciomodule.c [3.11] gh-101326: Fix regression when passing None to FutureIter.throw (GH-101327) (#101328) 2023-01-25 13:01:13 -08:00
_bisectmodule.c gh-92839: fixed typo in _bisectmodule.c (line 131) (GH-92849) 2022-05-28 11:31:06 -07:00
_bz2module.c
_codecsmodule.c
_collectionsmodule.c GH-100989: remove annotation from docstring (GH-102991) 2023-03-23 23:04:06 -07:00
_contextvarsmodule.c
_cryptmodule.c
_csv.c gh-65496: Correct wording on csv's skipinitialspace argument (GH-96170) 2022-10-07 16:45:53 -07:00
_curses_panel.c
_cursesmodule.c GH-94644: fix test_curses ref leak (GH-94647) 2022-07-07 05:03:00 -07:00
_datetimemodule.c gh-91838: Resolve HTTP links which redirect to HTTPS (GH-95642) 2022-08-04 06:15:11 -07:00
_dbmmodule.c gh-89452: Prefer gdbm-compat over ndbm (#92208) 2022-05-03 18:27:38 +02:00
_elementtree.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
_functoolsmodule.c gh-96641: Do not expose KeyWrapper in _functoolsmodule.c (gh-96642) 2022-09-07 04:50:00 -07:00
_gdbmmodule.c
_hashopenssl.c DOC: correct bytesarray -> bytearray in comments (GH-92410) (GH-94089) 2022-06-22 10:47:52 +02:00
_heapqmodule.c
_json.c Use static inline function Py_EnterRecursiveCall() (#91988) 2022-05-04 13:30:23 +02:00
_localemodule.c bpo-47000: Add locale.getencoding() (GH-32068) 2022-04-09 09:54:54 +09:00
_lsprof.c GH-95045: gc untrack _lsprof.Profiler before deallocating it (GH-95315) 2022-07-27 05:37:43 -07:00
_lzmamodule.c bpo-46541: Remove usage of _Py_IDENTIFIER from lzma module (GH-31683) 2022-03-05 01:38:56 +09:00
_math.h
_opcode.c
_operator.c DOC: correct bytesarray -> bytearray in comments (GH-92410) (GH-94089) 2022-06-22 10:47:52 +02:00
_pickle.c gh-83004: Clean up refleak in _pickle initialisation (GH-98841) 2022-11-06 06:41:24 -08:00
_posixsubprocess.c gh-82616: Add process_group support to subprocess.Popen (#23930) 2022-05-05 16:22:32 -07:00
_queuemodule.c
_randommodule.c
_scproxy.c
_ssl.c [3.11] GH-95494: Fix transport EOF handling in OpenSSL 3.0 (GH-95495) (#103006) 2023-03-27 16:14:01 +02:00
_ssl.h
_ssl_data.h
_ssl_data_111.h
_ssl_data_300.h
_stat.c
_statisticsmodule.c
_struct.c GH-94254: Make _struct module types immutable (GH-94269) 2022-06-26 03:42:41 -07:00
_testbuffer.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
_testcapi_feature_macros.inc gh-91324: List feature macros in the stable ABI manifest, improve tests (GH-32415) 2022-04-28 16:30:28 +02:00
_testcapimodule.c [3.11] gh-102493: backport unit test for PyErr_SetObject (#102602) 2023-03-11 15:01:01 +00:00
_testclinic.c [3.11] gh-64490: Fix bugs in argument clinic varargs processing (GH-32092) (#100368) 2022-12-28 02:10:06 +01:00
_testimportmultiple.c
_testinternalcapi.c Fix NULL test in _testinternalcapi (GH-92861) 2022-05-16 18:57:42 -07:00
_testmultiphase.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
_threadmodule.c [3.11] GH-100892: Fix race in clearing threading.local (GH-100922). (#100937) 2023-01-11 21:01:48 +05:30
_tkinter.c bpo-46996: Remove support of Tcl/Tk < 8.5.12 (GH-31839) 2022-03-17 13:05:52 +02:00
_tracemalloc.c [3.11] GH-96612: Skip incomplete frames in tracemalloc traces. (GH-96613) (#96617) 2022-09-06 18:42:41 +01:00
_typingmodule.c
_uuidmodule.c
_weakref.c bpo-46937: convert remaining functions to AC in _weakref (GH-31705) 2022-03-07 18:57:45 +09:00
_winapi.c [3.11] bpo-40882: Fix a memory leak in SharedMemory on Windows (GH-20684) (#99973) 2022-12-05 13:38:25 +01:00
_xxsubinterpretersmodule.c gh-93937, C API: Move PyFrame_GetBack() to Python.h (#93938) (#94000) 2022-06-20 15:47:41 +02:00
_zoneinfo.c gh-83004: Clean up refleak in _zoneinfo initialisation (GH-98842) 2022-11-06 06:30:41 -08:00
addrinfo.h [3.11] gh-95174: WASI: skip missing sockets functions (GH-95179) (GH-95308) 2022-07-31 18:19:32 +02:00
arraymodule.c bpo-47070: Add _PyBytes_Repeat() (GH-31999) 2022-03-28 04:43:45 -04:00
atexitmodule.c fixes gh-96292: Fix Trivial Typo in cpython/Modules/atexitmodule.c (GH-96327) 2022-08-26 22:59:21 -07:00
audioop.c bpo-2716: add license for audioop module (GH-19972) 2022-10-21 16:07:30 -07:00
binascii.c bpo-38256: Fix binascii.crc32() when inputs are 4+GiB (GH-32000) 2022-03-20 12:28:15 -07:00
cmathmodule.c [3.11] Add missing 'is' to cmath.log() docstring (GH-102049) (#102279) 2023-02-26 14:55:44 +00:00
config.c.in
errnomodule.c [3.11] gh-96005: Handle WASI ENOTCAPABLE in getpath (GH-96006) (GH-96034) (GH-96038) 2022-09-13 13:00:45 +02:00
faulthandler.c gh-96055: Update faulthandler to emit proper unexpect signal number (gh-99162) 2022-11-06 18:45:54 -08:00
fcntlmodule.c
gc_weakref.txt
gcmodule.c [3.11] gh-95324: Emit a warning if an object doesn't call PyObject_GC_UnTrack during deallocation in debug mode (GH-95325) (#95336) 2022-07-27 16:55:44 +01:00
getaddrinfo.c [3.11] gh-95174: WASI: skip missing sockets functions (GH-95179) (GH-95308) 2022-07-31 18:19:32 +02:00
getbuildinfo.c
getnameinfo.c [3.11] gh-95174: WASI: skip missing sockets functions (GH-95179) (GH-95308) 2022-07-31 18:19:32 +02:00
getpath.c [3.11] gh-102281: Fix potential nullptr dereference + use of uninitia… (#103040) 2023-03-25 16:35:00 -07:00
getpath.py gh-101543: Ensure Windows registry path is only used when stdlib can't be found (GH-101544) 2023-02-06 09:34:05 -08:00
getpath_noop.c
grpmodule.c
hashlib.h
itertoolsmodule.c [3.11] gh-60203: Revert changes in cycle.__setstate__ (GH-99982) (#100016) 2022-12-05 17:58:40 +01:00
ld_so_aix.in
main.c gh-90473: Check for HAVE_KILL in main.c:exit_sigint (GH-95165) 2022-07-23 04:09:10 -07:00
makesetup [3.11] gh-94404: Use module CFLAGS before PY_STDMODULE_CFLAGS (GH-94413) (GH-94415) 2022-06-29 16:22:41 +02:00
makexp_aix
mathmodule.c GH-98897: fix memory leak if math.dist raises exception (GH-98898) 2022-10-31 19:40:30 -07:00
md5module.c
mmapmodule.c bpo-46848: Move _PyBytes_Find() to internal C API (GH-31642) 2022-03-02 14:15:26 +01:00
nismodule.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
ossaudiodev.c gh-91734: Fix ossaudio support on Solaris (GH-91735) 2022-04-20 13:46:08 +03:00
overlapped.c [3.11] gh-98793: Fix typecheck in overlapped.c (GH-98835) (#98889) 2022-10-31 11:21:01 -07:00
posixmodule.c gh-102179: Fix os.dup2 error reporting for negative fds (GH-102180) 2023-03-04 06:55:02 -08:00
posixmodule.h
pwdmodule.c
pyexpat.c gh-100689: Revert "bpo-41798: pyexpat: Allocate the expat_CAPI on the heap memory (GH-24061)" (GH-100745) 2023-01-08 05:19:37 -08:00
readline.c Fix readline.c compiler warning. (GH-98738) 2022-10-26 16:16:09 -07:00
README
resource.c
rotatingtree.c
rotatingtree.h
selectmodule.c [3.11] gh-95174: Handle missing dup() and constants in WASI (GH-95229) (GH-95272) 2022-07-31 16:39:41 +01:00
Setup
Setup.bootstrap.in bpo-47152: Move sources of the _sre module into a subdirectory (GH-32290) 2022-04-04 10:53:26 +03:00
Setup.stdlib.in [3.11] gh-96002: Add functional test for Argument Clinic (GH-96178) (#100230) 2022-12-17 12:04:54 +05:30
sha1module.c
sha256module.c
sha512module.c
signalmodule.c GH-102397: Fix segfault from race condition in signal handling (GH-102399) 2023-03-08 00:26:20 -08:00
socketmodule.c gh-100795: Don't call freeaddrinfo on failure. (GH-101252) 2023-01-23 15:30:19 -08:00
socketmodule.h bpo-40280: Disable AF_UNIX, AF_PACKET, SO_REUSE* on Emscripten (#31829) 2022-03-11 23:25:14 +01:00
spwdmodule.c gh-91217: deprecate spwd (#91846) 2022-04-23 14:48:17 -07:00
symtablemodule.c
syslogmodule.c gh-98178: syslog() is not thread-safe on macOS (GH-98213) 2022-10-13 04:59:23 -07:00
termios.c GH-97001: Release GIL in termios extension (GH-99503) 2022-11-22 03:28:06 -08:00
testcapi_long.h
timemodule.c gh-90473: Decrease recursion limit and skip tests on WASI (GH-92803) 2022-05-19 08:05:52 -07:00
tkappinit.c
tkinter.h
unicodedata.c gh-101372: Fix unicodedata.is_normalized to properly handle the UCD 3… (gh-101388) 2023-02-06 02:32:30 -08:00
unicodedata_db.h
unicodename_db.h
winreparse.h
xxlimited.c [3.11] gh-95324: Emit a warning if an object doesn't call PyObject_GC_UnTrack during deallocation in debug mode (GH-95325) (#95336) 2022-07-27 16:55:44 +01:00
xxlimited_35.c [3.11] gh-90763: Modernise xx template module initialisation (GH-93078) (#93681) 2022-06-10 13:28:48 +02:00
xxmodule.c [3.11] gh-90763: Modernise xx template module initialisation (GH-93078) (#93681) 2022-06-10 13:28:48 +02:00
xxsubtype.c gh-91320: Use _PyCFunction_CAST() (#92251) 2022-05-03 21:42:14 +02:00
zlibmodule.c bpo-38256: Fix binascii.crc32() when inputs are 4+GiB (GH-32000) 2022-03-20 12:28:15 -07:00

Source files for standard library extension modules,
and former extension modules that are now builtin modules.