diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 6b2271f5d5ba8d..e0e904c1231ac3 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -4740,6 +4740,13 @@ def test_suggestions_extension(self): None ) + self.assertRaises( + TypeError, + _suggestions._generate_suggestions, + ["hello", "world", 0, 1.1], + "hell", + ) + # gh-131936: _generate_suggestions() doesn't accept list subclasses class MyList(list): pass diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-02-12-36-52.gh-issue-129573.zY2VO9.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-02-12-36-52.gh-issue-129573.zY2VO9.rst new file mode 100644 index 00000000000000..9290236ca32370 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-02-12-36-52.gh-issue-129573.zY2VO9.rst @@ -0,0 +1 @@ +Avoid possible abort when getting suggestions and there are non-string candidates. diff --git a/Python/suggestions.c b/Python/suggestions.c index 154a8ade1b0153..891eea54fc9d9f 100644 --- a/Python/suggestions.c +++ b/Python/suggestions.c @@ -149,6 +149,10 @@ _Py_CalculateSuggestions(PyObject *dir, } for (Py_ssize_t i = 0; i < dir_size; ++i) { PyObject *item = PyList_GET_ITEM(dir, i); + if (!PyUnicode_Check(item)) { + PyMem_Free(buffer); + return NULL; + } if (_PyUnicode_Equal(name, item)) { continue; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy